Mailjet

Mailjet is an email platform from Sinch. Datafly Signal adds or updates contacts in a Mailjet contact list (POST /v3/REST/contactslist/{list_ID}/managecontact) and sets their list subscription.

Why route Mailjet through Datafly Signal

  • Events come from your server, not the browser. They reach Mailjet even when a tracker blocker or a failed page unload would have dropped a client-side call.
  • Delivery is queued and retried. Signal buffers to Kafka and retries on 429 or a transient failure rather than dropping the event; a permanent rejection goes to the dead-letter queue with the vendor’s reason.
  • One consent decision governs every destination. Mailjet is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.

Get your Mailjet credentials

Copy your API keys

In Mailjet open Account Settings > API Key Management and copy the API key and secret key.

Choose the contact list

Open Contacts > Contact lists and note the numeric list ID.

Configuration

FieldRequiredDescription
api_keyYesYour Mailjet API Key (public). Found in Mailjet under Account Settings > API Key Management. Used as the Basic-auth username.
secret_keyYesYour Mailjet Secret Key (private), paired with the API Key. Found alongside the API Key in Account Settings > API Key Management. Used as the Basic-auth password.
contact_list_idYesThe numeric ID of the Mailjet contact list to add contacts to. Find it in the Mailjet UI under Contacts > Contact lists, or via GET /v3/REST/contactslist.

Management UI setup

  1. Go to Integrations in the sidebar and open the Integration Library tab.
  2. Find Mailjet under Marketing Automation and click Install.
  3. Choose a preset, enter the fields above and click Install Integration.

Management API setup

curl -X POST http://localhost:8084/v1/admin/integration-catalog/mailjet/install \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Mailjet",
  "variant": "default",
  "config": {
    "api_key": "your_api_key",
    "secret_key": "your_secret_key",
    "contact_list_id": "your_contact_list_id"
  },
  "delivery_mode": "server_side"
}'

What Signal sends

An example request, rendered from the default preset for newsletter_subscribed:

POST https://api.mailjet.com/v3/REST/contactslist/1234567/managecontact
 
{
  "Action": "addforce",
  "Email": "neill@example.com",
  "Name": "Neill Mcfixture"
}
FieldSource
EmailThe contact email from identify() traits, trimmed and lower-cased. Required.
NameThe name trait.
Actionaddforce on newsletter_subscribed, unsub on newsletter_unsubscribed; addnoforce (add, never re-subscribing someone who opted out) on the disabled events. Never set from cookie consent.

Mailjet matches the contact on the email and accepts no hashed identifier, so it is sent in plain text. An event without an email is not sent.

Presets

PresetSignal event → vendor event
Defaultsign_up → managecontact (disabled), identify → managecontact (disabled), newsletter_subscribed → managecontact, newsletter_unsubscribed → managecontact
Retailsign_up → managecontact (disabled), identify → managecontact (disabled), newsletter_subscribed → managecontact, newsletter_unsubscribed → managecontact, purchase → managecontact (disabled)
Publishingsign_up → managecontact (disabled), newsletter_subscribed → managecontact, newsletter_unsubscribed → managecontact, subscription_started → managecontact (disabled)

Events not listed are not sent. Each preset is a starting point: add, rename or remove mappings on the installed integration.

Notes and limits

  • Sign-up, identify, purchase and subscription started are listed but disabled. Their Action, addnoforce, adds a contact who is not yet in the list as subscribed, so these events would subscribe people who never asked for email. Enable them only for a list people joined knowingly.
  • Contact properties are not sent by default: Mailjet rejects the whole call if a property has not been created first. Create the property in Mailjet (Contacts > Contact properties), then add a Properties.<name> mapping to the integration.

Marketing-automation integrations have no consent category by default. Assign the marketing category when you install Mailjet, so an event is delivered only when the visitor has granted it. Cookie-banner consent is not email or SMS opt-in: keep messaging opt-in in Mailjet.

Verify it’s working

  1. Open the integration in the Signal Management UI and watch Live Events while you trigger a mapped event.
  2. Confirm a 2xx response from Mailjet.
  3. Find the contact in Mailjet and check the event or record arrived.

Troubleshooting

SymptomResolution
400A mapped property does not exist in Mailjet, or the Action is invalid.
401The API key or secret key is wrong.
404The list ID does not exist.