Zum Inhalt springen

Transaktions-E-Mails mit API-getriggerter Zustellung senden

post

/transactional/v1/campaigns/{campaign_id}/send

Verwenden Sie diesen Endpunkt, um sofortige, einmalige Transaktionsnachrichten an bestimmte Nutzer:innen zu senden.

Dieser Endpunkt wird zusammen mit der Erstellung einer Braze-Transaktions-E-Mail-Campaign und der entsprechenden Campaign-ID verwendet.

Ähnlich wie beim Endpunkt zum Senden getriggerter Campaigns können Sie mit diesem Campaign-Typ den Nachrichteninhalt im Braze-Dashboard hinterlegen und gleichzeitig über Ihre API festlegen, wann und an wen eine Nachricht gesendet wird. Im Gegensatz zum Endpunkt „Getriggerte Campaign senden“, der eine Zielgruppe oder ein Segment als Empfänger:innen der Nachrichten akzeptiert, muss eine Anfrage an diesen Endpunkt eine:n einzelne:n Nutzer:in entweder über external_user_id oder user_alias angeben, da dieser Campaign-Typ speziell für 1:1-Benachrichtigungen wie Bestellbestätigungen oder Passwortzurücksetzungen konzipiert ist.

Voraussetzungen

Um diesen Endpunkt zu verwenden, müssen Sie einen API-Schlüssel mit der Berechtigung transactional.send generieren.

Rate-Limit

Für den Endpunkt /transactional/v1/campaigns/{campaign_id}/send gilt ein kostenpflichtiges stündliches Kontingent, das in Einheiten gemessen wird (zum Beispiel 50.000 Einheiten pro Stunde, abhängig von Ihrem Paket). Für diesen Endpunkt gibt es kein separates endpunktspezifisches Rate-Limit. Anfragen, die Ihr Kontingent überschreiten, werden trotzdem versendet, jedoch ist nur das zugewiesene Volumen durch das SLA abgedeckt. Innerhalb des vom SLA abgedeckten Volumens werden 99,9 % der E-Mails in weniger als einer Minute versendet. Der Zähler für das Transaktionsvolumen wird stündlich zurückgesetzt.

Anfragen an diesen Endpunkt werden nicht auf Ihr Gesamt-Rate-Limit für externe API-Anfragen angerechnet. Dieser Endpunkt umgeht das standardmäßige Rate-Limiting der REST API. Daher gibt er weder die standardmäßigen X-RateLimit-*-Antwort-Header noch 429-Antworten bei überschrittenen Limits zurück. Weitere Informationen erhalten Sie beim Braze-Support.

Pfad-Parameter

Parameter Erforderlich Datentyp Beschreibung
campaign_id Erforderlich String ID der Campaign

Anfragetext

Content-Type: application/json
Authorization: Bearer YOUR-REST-API-KEY
{
  "external_send_id": (optional, string) see the following request parameters,
  "trigger_properties": (optional, object) personalization key-value pairs that apply to the user in this request,
  "recipient": (required, object)
    {
      // Either "external_user_id" or "user_alias" is required. Requests must specify only one.
      "user_alias": (optional, User alias object) User alias of the user to receive message,
      "external_user_id": (optional, string) External identifier of user to receive message,
      "attributes": (optional, object) fields in the attributes object create or update an attribute of that name with the given value on the specified user profile before the message is sent and existing values are overwritten
    }
}

Anfrage-Parameter

Parameter Erforderlich Datentyp Beschreibung
external_send_id Optional String Ein Base64-kompatibler String. Wird anhand der folgenden Regex validiert:

/^[a-zA-Z0-9-_+\/=]+$/

Mit diesem optionalen Feld können Sie einen internen Bezeichner für diesen bestimmten Versand übergeben, der in den Ereignissen des Transactional-HTTP-Event-Postbacks enthalten ist. Bei Übergabe wird dieser Bezeichner auch als Deduplizierungsschlüssel verwendet, den Braze 24 Stunden lang speichert.

Die Übergabe desselben Bezeichners in einer weiteren Anfrage führt 24 Stunden lang nicht zu einer neuen Versandinstanz durch Braze.
trigger_properties Optional Objekt Siehe Trigger-Eigenschaften. Personalisierungs-Schlüssel-Wert-Paare, die für die:den Nutzer:in in dieser Anfrage gelten.
recipient Erforderlich Objekt Die:der Nutzer:in, an die:den Sie diese Nachricht senden. Kann attributes und eine einzelne external_user_id oder einen user_alias enthalten.

Beachten Sie: Wenn Sie eine externe Nutzer-ID angeben, die in Braze noch nicht existiert, wird durch die Übergabe beliebiger Felder an das attributes-Objekt dieses Nutzerprofil in Braze erstellt und die Nachricht an die:den neu erstellte:n Nutzer:in gesendet.

Wenn Sie mehrere Anfragen an dieselbe:n Nutzer:in mit unterschiedlichen Daten im attributes-Objekt senden, werden die Attribute first_name, last_name und email synchron aktualisiert und in Ihre Nachricht eingefügt. Angepasste Attribute verfügen nicht über diesen Schutz. Gehen Sie daher vorsichtig vor, wenn Sie eine:n Nutzer:in über diese API aktualisieren und in schneller Folge unterschiedliche Werte für angepasste Attribute übergeben.

Beispielanfrage

curl -X POST \
  -H 'Content-Type:application/json' \
  -H 'Authorization: Bearer YOUR-REST-API-KEY' \
  -d '{
        "external_send_id" : YOUR_BASE64_COMPATIBLE_ID
        "trigger_properties": {
          "example_string_property": YOUR_EXAMPLE_STRING,
          "example_integer_property": YOUR_EXAMPLE_INTEGER
        },
        "recipient": {
          "external_user_id": TARGETED_USER_ID_STRING
        }
      }' \
  https://rest.iad-01.braze.com/transactional/v1/campaigns/{campaign_id}/send

Antwort

Der Endpunkt „Transaktions-E-Mails senden“ antwortet mit der dispatch_id der Nachricht, die die Instanz dieses Versands darstellt. Dieser Bezeichner kann zusammen mit den Ereignissen aus dem Transactional-HTTP-Event-Postback verwendet werden, um den Status einer einzelnen E-Mail zu verfolgen, die an eine:n einzelne:n Nutzer:in gesendet wurde.

Beispielantworten

{
    "dispatch_id": A randomly-generated unique ID of the instance of this send
    "status": Current status of the message
    "metadata" : Object containing additional information about the send instance
}

Fehlerbehebung

Der Endpunkt kann in einigen Fällen auch einen Fehlercode und eine lesbare Nachricht zurückgeben, wobei es sich meist um Validierungsfehler handelt. Hier finden Sie einige häufige Fehler, die bei ungültigen Anfragen auftreten können.

Fehler Fehlerbehebung
The campaign is not a transactional campaign. Only transactional campaigns may use this endpoint Die angegebene Campaign-ID gehört nicht zu einer Transaktions-Campaign.
The external reference has been queued. Please retry to obtain send_id. Die external_send_id wurde kürzlich erstellt. Verwenden Sie eine neue external_send_id, wenn Sie eine neue Nachricht senden möchten.
Campaign does not exist Die angegebene Campaign-ID entspricht keiner bestehenden Campaign.
The campaign is archived. Unarchive the campaign in order for trigger requests to take effect. Die angegebene Campaign-ID entspricht einer archivierten Campaign.
The campaign is paused. Resume the campaign in order for trigger requests to take effect. Die angegebene Campaign-ID entspricht einer pausierten Campaign.
campaign_id must be a string of the campaign api identifier Die angegebene Campaign-ID hat kein gültiges Format.
Error authenticating credentials Der angegebene API-Schlüssel ist ungültig.
Invalid whitelisted IPs Die IP-Adresse, von der die Anfrage gesendet wird, steht nicht auf der IP-Whitelist (falls diese verwendet wird).
You do not have permission to access this resource Der verwendete API-Schlüssel hat keine Berechtigung, diese Aktion durchzuführen.

Dieser Endpunkt gibt keine 429-Antworten zurück, wenn Sie Ihr Transaktionskontingent überschreiten. Details zu Kontingent, SLA und Antwort-Headern finden Sie unter Rate-Limit.

Transactional-HTTP-Event-Postback

Alle Transaktions-E-Mails werden durch Ereignisstatus-Postbacks ergänzt, die als HTTP-Anfrage an die von Ihnen angegebene URL zurückgesendet werden. So können Sie den Status der Nachricht in Realtime auswerten und Maßnahmen ergreifen, um Nutzer:innen auf einem anderen Kanal zu erreichen, wenn die Nachricht nicht zugestellt wurde, oder auf ein internes System als Fallback zurückgreifen, wenn Braze eine Latenz aufweist.

Sie können diese Updates über eindeutige Bezeichner mit einzelnen Nachrichten verknüpfen:

  • dispatch_id: Eine eindeutige ID, die Braze automatisch für jede Nachricht generiert.
  • external_send_id: Ein angepasster Bezeichner, den Sie angeben, z. B. eine Bestellnummer, um Updates mit Ihren internen Systemen abzugleichen.

Wenn Sie beispielsweise external_send_id: 1234 in die Anfrage beim Versenden einer Bestellbestätigungs-E-Mail aufnehmen, enthalten alle nachfolgenden Ereignis-Postbacks für diese E-Mail – wie Sent oder Delivered – den Wert external_send_id: 1234. Damit können Sie bestätigen, ob die Kund:in für Bestellung #1234 die Bestellbestätigungs-E-Mail erhalten hat.

Einrichten von Postbacks

In Ihrem Braze-Dashboard:

  1. Gehen Sie zu Einstellungen > E-Mail-Präferenzen.
  2. Geben Sie unter Transactional Event Status Postback die URL ein, an die Braze Status-Updates für Ihre Transaktions-E-Mails senden soll.
  3. Testen Sie das Postback.

URL-Feld für „Transactional Event Status Postback“ in den E-Mail-Präferenzen.

Postback-Body

{
  "dispatch_id": (string, a randomly-generated unique ID of the instance of this send),
  "status": (string, Current status of message from the following message status table,
  "metadata" : (object, additional information relating to the execution of an event)
   {
     "external_send_id" : (string, If provided at the time of the request, Braze will pass your internal identifier for this send for all postbacks),
     "campaign_api_id" : (string, API identifier of this transactional campaign),
     "received_at": (ISO 8601 DateTime string, Timestamp of when the request was received by Braze, only included for events with "sent" status),
     "enqueued_at": (ISO 8601 DateTime string, Timestamp of when the request was enqueued by Braze, only included for events with "sent" status),
     "executed_at": (ISO 8601 DateTime string, Timestamp of when the request was processed by Braze, only included for events with "sent" status),
     "sent_at": (ISO 8601 DateTime string, Timestamp of when the request was sent to the ESP by Braze, only included for events with "sent" status),
     "processed_at" : (ISO 8601 DateTime string, Timestamp the event was processed by the ESP, only included for events with "processed" status),
     "delivered_at" : (ISO 8601 DateTime string, Timestamp the event was delivered to the user's inbox provider, only included for events with "processed" status),
     "bounced_at" : (ISO 8601 DateTime string, Timestamp the event was bounced by the user's inbox provider, only included for events with "bounced" status),
     "aborted_at" : (ISO 8601 DateTime string, Timestamp the event was Aborted by Braze, only included for events with "aborted" status),
     "reason" : (string, The reason Braze or the Inbox provider was unable to process this message to the user, only included for events with "aborted" or "bounced" status),
   }
}

Nachrichtenstatus

Status Beschreibung
sent Nachricht wurde erfolgreich an einen E-Mail-Versandpartner von Braze übergeben
processed Der E-Mail-Versandpartner hat die Nachricht erfolgreich empfangen und für den Versand an den Posteingang-Anbieter der Nutzer:innen vorbereitet
aborted Braze konnte die Nachricht nicht erfolgreich versenden, da die Nutzer:innen keine gültige E-Mail-Adresse haben oder die Liquid-Abbruchlogik im Nachrichtentext aufgerufen wurde. Alle abgebrochenen Ereignisse enthalten ein Feld reason im Metadaten-Objekt, das angibt, warum die Nachricht abgebrochen wurde
delivered Nachricht wurde vom Posteingang-Anbieter der Nutzer:innen akzeptiert
bounced Nachricht wurde vom Posteingang-Anbieter der Nutzer:innen abgelehnt. Alle Bounce-Ereignisse enthalten ein Feld reason im Metadaten-Objekt, das den vom Posteingang-Anbieter bereitgestellten Bounce-Fehlercode wiedergibt

Beispiel-Postback


// Sent Event
{
    "dispatch_id": "acf471119f7449d579e8089032003ded",
    "status": "sent",
    "metadata": {
      "received_at": "2020-08-31T18:58:41.000+00:00",
      "enqueued_at": "2020-08-31T18:58:41.000+00:00",
      "executed_at": "2020-08-31T18:58:41.000+00:00",
      "sent_at": "2020-08-31T18:58:42.000+00:00",
      "campaign_api_id": "417220e4-5a2a-b634-7f7d-9ec891532368",
      "external_send_id" : "34a2ceb3cf6184132f3d816e9984269a"
    }
}

// Processed Event
{
    "dispatch_id": "acf471119f7449d579e8089032003ded",
    "status": "processed",
    "metadata": {
      "processed_at": "2020-08-31T18:58:42.000+00:00",
      "campaign_api_id": "417220e4-5a2a-b634-7f7d-9ec891532368",
      "external_send_id" : "34a2ceb3cf6184132f3d816e9984269a"
    }
}

// Aborted
{
    "dispatch_id": "acf471119f7449d579e8089032003ded",
    "status": "aborted",
    "metadata": {
      "reason": "User not emailable",
      "aborted_at": "2020-08-31T19:04:51.000+00:00",
      "campaign_api_id": "417220e4-5a2a-b634-7f7d-9ec891532368",
      "external_send_id" : "34a2ceb3cf6184132f3d816e9984269a"
    }
}

// Delivered Event
{
    "dispatch_id": "acf471119f7449d579e8089032003ded",
    "status": "delivered",
    "metadata": {
      "delivered_at": "2020-08-31T18:27:32.000+00:00",
      "campaign_api_id": "417220e4-5a2a-b634-7f7d-9ec891532368",
      "external_send_id" : "34a2ceb3cf6184132f3d816e9984269a"
    }
}

// Bounced Event
{
    "dispatch_id": "acf471119f7449d579e8089032003ded",
    "status": "bounced",
    "metadata": {
      "bounced_at": "2020-08-31T18:58:43.000+00:00",
      "reason": "550 5.1.1 The email account that you tried to reach does not exist",
      "campaign_api_id": "417220e4-5a2a-b634-7f7d-9ec891532368",
      "external_send_id" : "34a2ceb3cf6184132f3d816e9984269a"
    }
}

New Stuff!