Actito
Datafly Signal delivers events to Actito server-to-server using Actito’s profile API. Instead of running an Actito tracking script in the browser, Signal upserts the visitor’s Actito profile from your own first-party data, keeping contact records current for Actito email campaigns, journeys, and automation scenarios.
Prerequisites
Before configuring Actito in Signal, you need an Actito license, an API user, and a destination profile table.
Step 1: Create an API user
- In the Actito portal, the license administrator goes to the API user management area.
- Create a new API user dedicated to Signal (for example “Datafly Signal”).
- Grant it write access on the entity and profile table you want Signal to feed.
- Copy the generated API Key — an opaque string such as
qhdfbvdh747R49FRHrthqhdfbvdh74. You will paste this into Signal.
Step 2: Note your entity and profile table
- In the Actito Dashboard, note your entity name (the license/database identifier).
- Open the profile table you want to keep in sync and note its exact name (it is case-sensitive).
- Confirm the table’s unique key is the email attribute, and that it has attributes for the data Signal will write (for example
firstName,lastName,phone,language, and a marketing-consent attribute).
Actito stores profile attributes in cleartext because the data lives in your own Actito tenant (your CRM). Email, phone, and name are not hashed for Actito, unlike the match keys sent to advertising platforms.
Configure in Signal
Configuration Fields
| Field | Required | Description |
|---|---|---|
entity | Yes | Your Actito entity name, exactly as shown in the Dashboard. |
profile_table | Yes | The destination profile table name (case-sensitive). |
api_key | Yes | The API Key for your Actito API user. |
access_token | No | A short-lived access token for preview/testing only. Leave blank in production. |
Management UI Setup
Add the integration
Go to Integrations > Add Integration > Actito.
Choose a preset
Select the Default preset — page views plus identify-driven profile enrichment (email, name, phone, language, and marketing consent).
Enter your credentials
Enter your entity, profile_table, and api_key.
Select consent categories
Select the consent category that gates marketing (typically marketing).
Save
Click Save to activate the integration.
API Endpoint
POST https://api.actito.com/v4/entity/{entity}/table/{profile_table}/profile?allowUpdate=trueThe request body is a flat JSON object of profile attributes. allowUpdate=true makes the call create-or-update: Actito matches on the table’s unique key (email) and updates the existing profile if one is found, otherwise creates it.
Authentication
Actito uses a two-step token flow. Signal exchanges your API Key for a short-lived access token, then sends that token on every profile call.
GET https://api.actito.com/auth/token
Authorization: {api_key}The response contains an accessToken (valid for 15 minutes), which Signal sends as:
Authorization: Bearer {accessToken}Signal handles this exchange and token refresh for you.
Identity Signals
Actito profiles are keyed on the email address, so identifying users is what makes this integration work. Call datafly.identify() when a user logs in, registers, or submits a form:
datafly.identify("user-123", {
email: "jane.doe@example.com",
first_name: "Jane",
last_name: "Doe",
phone: "+44 7700 900123"
});Signal normalises these before delivery:
| Trait | Actito attribute | Normalisation |
|---|---|---|
email | email | trimmed, lowercased (used as the upsert key) |
first_name | firstName | as provided |
last_name | lastName | as provided |
phone | phone | converted to E.164 |
context.locale | language | as provided |
| marketing consent | marketingConsent | true / false from your CMP’s canonical marketing category |
The marketingConsent target attribute name is deployment-specific. If your Actito table uses a different attribute or a subscription for marketing opt-in, edit the mapping in the integration’s Field Mappings.
Event Mapping
The Default preset upserts the profile on every tracked event so the contact record stays current. Two events are mapped explicitly; all others keep the profile fresh via global identity mappings and are otherwise dropped.
| Signal event | Behaviour |
|---|---|
page | Refreshes profile (including language) on page view |
Signed Up | Sets firstName / lastName on registration |
Example: identify on sign-up
Datafly.js call:
datafly.identify("user-123", {
email: "Jane.Doe@Example.com ",
first_name: "Jane",
last_name: "Doe",
phone: "+44 7700 900123"
});
datafly.track("Signed Up");Actito profile payload sent by Signal:
{
"email": "jane.doe@example.com",
"firstName": "Jane",
"lastName": "Doe",
"phone": "+447700900123",
"language": "en",
"marketingConsent": true
}This is sent as POST .../v4/entity/{entity}/table/{profile_table}/profile?allowUpdate=true, creating or updating the profile matched on email.
Testing Your Integration
Trigger an identify
On a test page with Signal installed, call datafly.identify() with a test email, then datafly.track("Signed Up").
Check the Signal event debugger
In the Management UI, open the Event Debugger for the Actito integration and confirm the outgoing payload contains email and the expected attributes, and that Actito returned 200 OK.
Verify in Actito
In the Actito Dashboard, open your profile table and search for the test email. The profile should appear (or be updated) with the attributes Signal sent.
Troubleshooting
| Problem | Solution |
|---|---|
401 Unauthorized | The access token expired or the API Key is wrong. Re-check the api_key value; Signal refreshes the 15-minute token automatically. |
403 Forbidden | The Actito API user lacks write access on this entity/table. Grant write permission in the Actito portal. |
404 Not Found | The entity or profile_table name is wrong (names are case-sensitive). |
400 Bad Request | The payload contains an attribute the table doesn’t define, or the email is missing. Confirm the table’s attributes match the mappings. |
| Profile not updating | Confirm the table’s unique key is email and that allowUpdate behaviour is enabled (Signal sets it). |
| Wrong API host | Some Actito licenses are on a regional host. Confirm your base host is api.actito.com. |