Skip to main content

Supported syncing

For more information about sync modes, refer to the sync modes docs.

Connect to Sinch Campaigns

To connect Sinch Campaigns to Hightouch you need the API key from your Sinch Campaigns console. It’s a pre-encoded Basic-auth token, visible under your account settings.
  1. Go to the Destinations overview page and select Add destination.
  2. Select Sinch Campaigns from the destination catalog.
  3. Enter the following credentials, then select Continue:
    • Region: the Sinch Campaigns region your account is provisioned in. Choose European Union or United States. Sinch hosts EU and US tenants separately, so picking the wrong one fails authentication on save.
    • API key: your Sinch Campaigns API key, copied from the console. It’s already base64-encoded, so Hightouch uses it directly as the Basic auth header — there’s no separate secret to enter. Hightouch uses it to mint short-lived bearer tokens for the Campaigns API and JWTs for the Audiences API.
    When you select Continue, Hightouch authenticates against both the Sinch Campaigns API and the Sinch Audiences API. If only one check fails, the test-connection step calls out which API to investigate — usually an account that isn’t provisioned for Audiences, or a key from the wrong region.
The single API key authorizes both APIs. The Sinch account Hightouch reads and writes audiences against is derived from the key itself, so there’s nothing else to configure.

Sync configuration

Audience

Audience syncs keep a Sinch audience in lockstep with a Hightouch model. Each sync run uploads the model’s current contents as a CSV and replaces the audience membership wholesale.
When you configure the sync, you can pick an existing Sinch audience or create a new one by name. Hightouch populates the existing-audience dropdown by paging through every audience in your Sinch account.
Hightouch refuses to upload a zero-row file. If the source query returns no rows, the sync errors instead of clearing the Sinch audience. Wiping an audience by accident is almost always a query bug, not the intent.

Sync mode

Audience syncs run in Mirror mode. Each run reuploads the full membership. Sinch’s Audiences API doesn’t expose an append or remove operation, so incremental updates aren’t possible.

Configure record matching

Each row must include a phone number in E.164 format (for example, +5215512345678). Sinch identifies audience contacts by their MSISDN.

Map fields

Add a mapping for each extra attribute you want to attach to contacts in the audience. Each mapping becomes a column in the uploaded CSV, and the mapping name is the column header Sinch sees. Mapping names must use lowercase letters, digits, and underscores, and must start with a letter (for example, first_name). Date values are converted to ISO 8601 before being written to the CSV.

Trigger campaigns

Campaign trigger syncs fire an existing Sinch campaign for the rows in your model. Each row becomes one recipient, and positional template variables in the campaign template are filled from the row’s mappings.
Only campaigns marked ready_to_shoot in Sinch appear in the campaign dropdown. Draft, paused, or unpublished campaigns must be published in the Sinch console first.

Sync mode

Campaign trigger syncs run in Insert mode. Each batch of rows is submitted to Sinch’s send-to-contacts endpoint, which returns a task identifier. Hightouch then polls /tasks/{task_id} every 5 seconds until Sinch reports the task as finished. Hightouch sends recipients in batches of 500 with a parallelization of 1. Sinch’s API rejects concurrent sends to the same campaign, so a sync to a single campaign always runs sequentially. Syncs that span multiple campaigns are still grouped per-campaign before submission.

Map fields

Map template variables

Sinch substitutes mapped values into the campaign template positionally. The first mapping becomes [[A]], the second becomes [[B]], and so on. Add one mapping per template placeholder, in the same order they appear in the template. The mapping name is for your reference and is not sent to Sinch. Date values are converted to ISO 8601 before being substituted, since Sinch’s templates render the raw text as-is.

Tips and troubleshooting

To see the exact API requests and responses from each sync run, use the live debugger. To get notified by Slack, PagerDuty, SMS, or email when a sync fails, set up sync alerts. If you run into an issue this page doesn’t cover, .

Validate your setup

After your first sync completes, verify the upload in Sinch:
  • Audience syncs: open the audience in the Sinch console and confirm the contact count matches the row count from your model.
  • Campaign trigger syncs: check the campaign’s stats by shoot tag. If you configured a shoot tag, Sinch rolls every send from this run under it; otherwise, use the run’s timestamp.

Per-row errors on campaign triggers

When Sinch reports that a send-to-contacts task failed, Hightouch can’t always map the failure to specific rows — Sinch’s error payload isn’t consistently keyed across error types. Hightouch surfaces Sinch’s full error message against every recipient in the failing batch, so the Live debugger is the most reliable place to see what went wrong.
Last modified on July 7, 2026