EmailElement Docs

Data Sync

Data Sync is a Triggered Sequence action that calls a webhook for every contact that reaches it. Set the destination up once and each contact moving through that step is sent on, with their data filled in.

Common uses:

  • Push an engagement into a CRM such as HubSpot or Salesforce
  • Tell a Slack channel when a contact clicks a particular email
  • Add the contact to a list in another tool
  • Copy contacts from one EmailElement contact list to another

Two connectors

Connector Use it when
Generic The destination is any outside system: a CRM, a Zapier webhook, Slack, your own endpoint. You set the method, URL, headers and body yourself.
EmailElement You are copying contacts into another EmailElement contact list. Most of the request is built for you.

Setting up a Generic Data Sync

  1. Open the triggered sequence and drag the Data Sync block onto the canvas where the sync should happen.
  2. Click the block to open its settings.
  3. Set Connector to Generic.
  4. Fill in the request:
Field What goes in it
HTTP Request Method GET, POST, PUT, PATCH or DELETE. Most webhooks want POST.
URL The full address to call, for example https://api.hubapi.com/crm/v3/objects/contacts. Up to 2,083 characters.
Custom Header A key and value for each header the destination needs, such as Authorization: Bearer xyz123. Click + to add another. Up to 5,000 characters across all of them.
Request Body The payload to send. Up to 5,000 characters.
  1. Put contact data into the body with {Field Name} replacement tags. Right-click the box to pick a tag rather than typing it, which also gets the name right.
{
  "properties": {
    "email": "{Email}",
    "firstname": "{First Name}",
    "lastname": "{Last Name}",
    "lifecyclestage": "subscriber"
  }
}

The tag name has to match the metadata field name exactly, spaces and capitals included. A contact with no value for a field sends an empty string, so the destination has to cope with that, or the sequence has to filter those contacts out before this step.

  1. Click Test to send one sample request and see the result. Click Save to keep the settings. The two are independent, so either order is fine.

Setting up an EmailElement Data Sync

  1. Add the Data Sync block the same way and set Connector to EmailElement.
  2. Fill in the destination:
Field What goes in it
API Key An EmailElement API key, from Account > API Keys.
Contact List ID The id of the list to copy into. It is the number at the end of the URL when that list is open.
Overwrite Existing Yes replaces stored values for a contact already on the list. No keeps what is there and only fills in what is missing.

The URL is built for you and shown under the form.

  1. Open Fields and pick the metadata to send. Each one gets a row under Field Mappings with the destination key on the left and the source field on the right in braces. Change the destination key when the other list calls the field something else, for example sending First Name as firstname.
  2. Request Body Preview updates as you map, so you can see exactly what will be sent.
  3. Click Test, then Save.

Watching it run

Call History on the block shows the real calls: contacts that came through the sequence and hit this step. It carries a total, a success count, a failure count and the most recent calls with their status, time and duration. Click Response under a failed call to see what the destination sent back. Click the refresh icon to reload it.

A test does not appear in Call History. Its result is shown to you at the time you click Test.

Reading a failure

Response Usually means
401 Unauthorized The API key is missing, wrong or expired.
403 Forbidden The key is valid but not allowed to call that endpoint.
404 Not Found The URL is wrong, or what it points at no longer exists.
429 Too Many Requests The destination is rate limiting you.
5xx The destination is having trouble at its end.
Timed out The destination did not answer in time.

When a Data Sync keeps failing

A Data Sync that fails repeatedly is paused for a while rather than called again straight away, so a broken endpoint is not hammered. It starts calling again on its own once the pause is over.

Repeated pauses usually mean one of these:

  • The endpoint is gone for good, or the key behind it has expired
  • The destination is throttling harder than the retry can absorb
  • The body is not the shape the destination expects

Fix the cause, click Test to check it, and the Data Sync carries on.

Limits

Limit
URL 2,083 characters
Custom headers, all together 5,000 characters
Request body 5,000 characters
Methods GET, POST, PUT, PATCH, DELETE

Questions that come up

Can one sequence have more than one Data Sync? Yes. Each block has its own URL, headers, body and call history.

What happens to contacts already past this step when I change the URL or body? Nothing. The change applies to contacts that reach the step afterwards. Call History still shows what was sent at the time.

Is the API key hidden? The field is masked on screen. Treat the key like any other credential you paste into a header.

Something went wrong. Reloading the page usually fixes it. Reload ×

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.