SureContact Integration
SureContact is a WordPress-native CRM and email marketing plugin from the Brainstorm Force team — the same team behind SureForms, SureCart, and Spectra. WP Smart Consent integrates with SureContact via its public API v1, forwarding opted-in contacts to your lists in real time using a single contact upsert call.
Enabling the Integration#
In the WP Smart Consent dashboard, go to CRMs & ESPs, find the SureContact card, open the Connection tab, and paste in your API key. Toggle the integration on and save. WP Smart Consent connects to your SureContact account and populates the list picker with your available lists.
To find your API key, open SureContact in your WordPress admin and go to SureContact → Settings → API. Copy the key shown there. Authentication uses the X-API-Key header.

Custom Fields#
SureContact supports contact custom fields defined in your SureContact account. In the Custom fields tab, add a row, select the WPSC source field on the left, and enter the SureContact custom field name on the right. The field name must match exactly what is defined in SureContact. These are sent inside the custom_fields object in the API payload.
Note that phone and company are treated as primary fields in SureContact’s contact model, not custom fields. If you map either of those through the field mapping tab they are sent inside primary_fields automatically rather than custom_fields.

Field Mapping#
The Field mapping tab maps WPSC fields to SureContact contact fields. SureContact’s primary contact fields are email, first_name, last_name, phone, and company. Email, first name, and last name are always sent automatically inside primary_fields. Phone and company, when mapped, are also sent inside primary_fields. Any other destination key goes to custom_fields.

How It Works#
WP Smart Consent sends a single POST to https://api.surecontact.com/api/v1/public/contacts/upsert with the contact payload. If the contact already exists they are updated. The source field is set to integration on every upsert so you can filter by origin inside SureContact.
The payload structure is:
json
{
"primary_fields": {
"email": "jane@example.com",
"first_name": "Jane",
"last_name": "Smith",
"source": "integration"
},
"custom_fields": {
"city": "Dubai"
},
"list_uuids": ["uuid-1", "uuid-2"],
"tag_uuids": ["uuid-3"]
}
Lists and tags in SureContact are referenced by UUID rather than name. WP Smart Consent resolves tag names to UUIDs at settings save time by calling GET /api/v1/public/tags and caching the resolved UUIDs in the integration settings. This means tag lookups add no latency at opt-in time.
Lists Tab#
The Lists tab is where you select which SureContact lists opted-in contacts are added to. The list is populated automatically from your SureContact account after the API key is saved. Selected list UUIDs are sent directly in the payload.
Options#
The Options tab has two settings.
Update existing contacts — controls whether an existing SureContact contact matched by email has their fields updated on each opt-in.
Send on unchecked — when enabled, contacts are forwarded to SureContact even when the opt-in checkbox was not ticked.
Tags — a comma-separated list of tag names to apply to every contact. Tag names are resolved to UUIDs at save time. Tags that do not exist in SureContact at save time will not be applied — create them in SureContact first before adding them here.

Troubleshooting#
List not populating — confirm the API key is correct and saved. Lists are fetched from GET /api/v1/public/lists after save. A wrong key returns a 401 and the list stays empty.
Tags not being applied — tags are resolved to UUIDs when you save the integration settings, not at opt-in time. If you create a new tag in SureContact after saving, re-open the connection settings and save again to re-resolve the tag UUIDs.
Custom field values not saving — confirm the field name in the Custom fields tab matches exactly what is defined in SureContact. Field names are case-sensitive.