io.tt SDK Docs
GuidesCRMSalesforce

Salesforce Setup

This guide is for brand managers and Salesforce administrators connecting a Salesforce org to io.tt. Once setup is complete, every experience signup will flow into Salesforce automatically — no further configuration is needed per campaign.

For developer documentation on the SDK fields and field mapping, see the Salesforce Developer Guide.


Overview

io.tt connects to Salesforce as a native API integration using a Salesforce Connected App. Setup involves three steps, split between your Salesforce administrator and your io.tt account manager:

StepWho does itWhere
1. Create a Connected AppSalesforce adminSalesforce Setup
2. Create io.tt custom fieldsSalesforce adminSalesforce Setup → Object Manager
3. Configure the integrationio.tt account managerio.tt dashboard (on your behalf)

Step 1 — Create a Connected App in Salesforce

Your Salesforce administrator needs to create a Connected App and share the credentials with io.tt.

Create the Connected App

  1. In Salesforce, go to Setup → App Manager → New Connected App
  2. Fill in the basic details (name, contact email)
  3. Under API (Enable OAuth Settings), check Enable OAuth Settings
  4. Set the Callback URL to https://login.salesforce.com/services/oauth2/callback (placeholder — io.tt uses the JWT bearer flow, not user-facing OAuth)
  5. Under Selected OAuth Scopes, add:
    • Manage user data via APIs (api)
    • Perform requests at any time (refresh_token, offline_access)
  6. Save the Connected App

Share these credentials with io.tt

Once created, provide your io.tt account manager with:

FieldWhat it isWhere to find it
Instance URLYour Salesforce org domainBrowser URL bar when logged into Salesforce — e.g. https://mycompany.my.salesforce.com
Client ID (Consumer Key)Identifies the Connected AppSetup → App Manager → your app → View → Consumer Key
Client Secret (Consumer Secret)Secret for the Connected AppSame location — Click to reveal
API VersionWhich Salesforce REST API version to usee.g. v59.0 — io.tt defaults to the latest stable version if not specified

Step 2 — Create io.tt Custom Fields in Salesforce

io.tt writes platform metadata to custom fields on the Lead or Contact object. Your Salesforce administrator needs to create these once.

Where to create them

Salesforce Setup → Object Manager → Lead (or Contact) → Fields & Relationships → New

Create each field as Text with the field lengths shown:

Field LabelField API NameTypeLengthPurpose
io.tt Participant IDio_tt_participant_id__cText255Links the Salesforce record back to io.tt
io.tt Experience IDio_tt_experience_id__cText255Which experience the participant came from
io.tt Experience Nameio_tt_experience_name__cText255Human-readable experience name
io.tt Experience Typeio_tt_experience_type__cText50e.g. competition, loyalty, gifting
io.tt Brand Nameio_tt_brand_name__cText255Brand name

Custom extra fields (per experience)

If the experience collects custom form fields (e.g. age range, product preference), each maps to an additional custom field named io_tt_extra_{key}__c. These are created on a per-experience basis — your io.tt account manager will provide the exact list of field names needed before launch.

You only need to create fields for the extra keys your experience actually collects. Coordinate with the developer building the experience form to get this list.


Step 3 — Configure the Integration in io.tt

Your io.tt account manager configures the Salesforce integration on your behalf in the io.tt dashboard. You will need to confirm the following decisions:

SettingOptionsNotes
Object TypeLead or ContactWhich Salesforce object participants are written to. Can differ per experience — e.g. a competition goes to Lead, a loyalty programme goes to Contact
Upsert FieldUsually EmailThe field io.tt uses to upsert records — if a record with a matching value already exists it is updated, otherwise a new one is created. Defaults to Email — can be changed to a custom io_tt_uid__c field if preferred

What Happens After Setup

Once the integration is live:

  • Every experience signup is automatically written to Salesforce as a Lead or Contact
  • Records are upserted — if a matching record already exists (by email), it is updated rather than duplicated
  • All standard participant fields (name, email, address, marketing consent) are mapped to standard Salesforce fields
  • io.tt context fields (experience ID, brand name, etc.) are written to the io_tt_* custom fields you created
  • Custom extra fields from the experience form are written to their matching io_tt_extra_{key}__c fields

No action is required per campaign — once configured at the organisation level, all experiences for that brand route to Salesforce.


Object Type Detail

io.tt writes to either Lead or Contact depending on what's configured for each experience. The two objects have minor field name differences:

io.tt fieldLead fieldContact field
addressLine1StreetMailingStreet
localityCityMailingCity
administrativeDivisionStateMailingState
postalCodePostalCodeMailingPostalCode
countryCountryMailingCountry
dateOfBirth(not available on Lead)Birthdate

If your experience collects date of birth and uses Lead as the object type, that field will not be mapped. In this case, either switch to Contact or store date of birth in an extra field with a matching custom field.


Checklist

Before going live, confirm the following:

  • Connected App created in Salesforce and credentials shared with io.tt
  • All io_tt_* custom fields created on the correct object (Lead or Contact)
  • Custom extra fields created for any additional form fields the experience collects
  • Object type confirmed (Lead or Contact) with io.tt account manager
  • Upsert field confirmed (default: Email) with io.tt account manager
  • io.tt account manager has confirmed the integration is active for the experience

On this page