EmailElement Docs

Data Sync

Data Sync is a Triggered Sequence action that sends every contact that reaches it somewhere else: to a webhook, or by email to users of your account. 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
  • Email a new lead's details to your sales team

Three 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 Contact Api You are copying contacts into another EmailElement contact list. Most of the request is built for you.
Send Email You want the contact's data in an email. You pick the users who receive it, the subject and the body of the email.

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 Contact Api Data Sync

  1. Add the Data Sync block the same way and set Connector to EmailElement Contact Api.
  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.

Setting up a Send Email Data Sync

  1. Add the Data Sync block the same way and set Connector to Send Email.
  2. Fill in the email:
Field What goes in it
Users The users of your account who receive the contact's data. Pick one or more. Only active users who have verified their email address are listed.
Subject The subject line. It can hold replacement tags, for example New lead: {Email}. Up to 500 characters.
Custom Header Optional extra email headers, such as X-Source: EmailElement. Headers EmailElement sets itself, such as From, To, Reply-To, Subject, Message-Id and List-Unsubscribe, cannot be added. They are the same headers a send integration refuses.
Email Template The body of the email, with replacement tags for the contact's data. Up to 5,000 characters.
  1. Right-click the Subject or Email Template box to pick a tag. Tags follow the same rules as the Generic connector.
New contact: {Email}
Name: {First Name} {Last Name}
  1. A template with HTML tags in it, such as <p> or <br>, is sent as an HTML email. Anything else is sent as plain text. The template decides this, not the contact's data. In an HTML template, a contact's values are shown as text, never as HTML.
  2. Keep the template to plain Latin characters. Emoji and letters outside Western European alphabets in the template are saved as ?. The subject keeps them.
  3. Click Test to send one email to each selected user, filled in with sample contact data. Then click Save.

The email is sent from EmailElement's own notification address. It does not use your send integrations or sender domains.

Each selected user gets their own copy. A user who is deactivated, or whose email is no longer verified, stops receiving these emails. Nothing else needs to change. To send to someone outside your account, add them as a user first.

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.

For a Send Email block, a success means the email was handed to EmailElement's sending. It does not tell you the email reached the inbox.

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 or email template 5,000 characters
Email subject 500 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.

Can a Send Email block go to more than one person? Yes. Select every user who should receive it. Each one gets a separate email.

Can a Send Email block go to an address outside my account? No. It only sends to users of your account. Add the person as a user, verify their email, then select them.

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.