Product guide · Integrations

From buyer answer to usable revenue context.

Connect Kulario to the systems your team already runs. Save the complete experience, then send only the fields you explicitly map.

One completion. One controlled data path.

Only mapped fields leave Kulario.

Consent gated
01

Buyer response

Identity, answers, result

02

Kulario context

Saved as one complete receipt

03

Experience mapping

Selected fields and values

04

Revenue stack

CRM, MAP, or signed endpoint

Quick start

Connect once. Map per experience.

Connect credentials once at the workspace level. Each experience then chooses its own destination and sends only the context that campaign needs.

Owner or admin

Workspace owners and admins manage credentials and connection status.

Existing external fields

Create custom CRM or MAP fields before trying to map them in Kulario.

Required contact data

Collect and require the identity fields your selected destination needs.

Marketing consent

External delivery cannot be activated until the experience includes consent copy.

Shared activation flow

  1. 1

    Connect the destination once from the workspace Integrations page.

  2. 2

    Create any custom fields in the external system before mapping them in Kulario.

  3. 3

    In the experience builder, open Capture & activate → Contact gate and collect the identity fields the destination needs.

  4. 4

    Mark required identity fields as Required, add clear Marketing consent text, and optionally add a Privacy policy URL.

  5. 5

    Open Capture & activate → Destinations, choose the connection, and start with Auto-match or Suggest.

  6. 6

    Review the Kulario field → destination field pairs, turn on Send completed responses, and save.

  7. 7

    Publish the experience. Use a consented live completion for the final end-to-end check; test and Demo Lab activity never delivers.

Kulario Integrations page showing Marketo, HubSpot, Salesforce, and Signed webhook connection cards
Workspace Integrations. No credentials or customer data are shown in this documentation screenshot.

Destination guide

Adobe Marketo Engage

Create or update Marketo people with the buyer's identity, result, declared answers, and recommended next action.

Destination

Person

Identity

Email

Delivery

Mapped fields only

Prepare the destination

  • In Marketo Admin, create a dedicated role with Read-Write Lead API access.
  • Create an API-only user and assign that role. Give it access to every lead partition Kulario may update.
  • Under Admin → Integration → LaunchPoint, create a Custom service for that API-only user.
  • Copy the Client ID and Client Secret from the service details.
  • Under Admin → Integration → Web Services, copy the REST and Identity endpoints.
Kulario Marketo connection form showing the Identity endpoint, REST endpoint, Client ID, and Client secret fields
Kulario UI with synthetic, redacted values. Provider interfaces may change; use the linked official guidance for provider-side navigation.

Connect and activate

  1. 1

    Open Integrations from the Kulario workspace navigation.

  2. 2

    Choose Connect Adobe Marketo Engage.

  3. 3

    Paste the Identity endpoint and REST endpoint from Marketo Web Services.

  4. 4

    Paste the LaunchPoint Client ID and Client Secret.

  5. 5

    Choose Verify & save. Kulario verifies access and imports writable Lead fields.

  6. 6

    Open the experience builder, then Capture & activate → Destinations, and select Primary Marketo.

  7. 7

    Review Work email → email, add the result and answer fields you need, turn delivery on, and save.

Required mapping

  • Work email → email

What happens after completion

Kulario uses Marketo's Sync Leads API with createOrUpdate and email as the lookup field. Only the fields saved in this experience's mapping are included.

Troubleshoot Adobe Marketo Engage
Endpoint rejected
Use the exact .mktorest.com/identity and .mktorest.com/rest URLs from Admin → Web Services. They must share a hostname.
Credentials rejected
Recheck the LaunchPoint Client ID, Client Secret, API-only user, and assigned role.
A custom field is missing
Create the field in Marketo, grant the API user access, then re-verify the Kulario connection.

Destination guide

HubSpot

Keep HubSpot Contact properties aligned with each buyer's result, priority, readiness, and declared context.

Destination

Contact

Identity

Email

Delivery

Mapped fields only

Prepare the destination

  • A HubSpot super admin creates a private app from Development → Legacy apps.
  • Add crm.objects.contacts.write so Kulario can create and update Contacts.
  • Add crm.schemas.contacts.read so Kulario can discover the writable Contact property catalog.
  • Create every custom Contact property you expect to map. Kulario does not create properties in HubSpot.
  • Create the private app and copy its access token.
Kulario HubSpot connection form showing the private app access token field
Kulario UI with synthetic, redacted values. Provider interfaces may change; use the linked official guidance for provider-side navigation.

Connect and activate

  1. 1

    Open Integrations in Kulario and choose Connect HubSpot.

  2. 2

    Paste the complete Private app access token.

  3. 3

    Choose Verify & save. Kulario reads the Contact schema and keeps only writable properties.

  4. 4

    Open the experience builder, then Capture & activate → Destinations, and select Primary HubSpot.

  5. 5

    Keep Work email → email and add the result, answer, or custom mappings this campaign needs.

  6. 6

    Turn on Send completed responses and save the destination.

Required mapping

  • Work email → email

What happens after completion

Kulario batch-upserts a HubSpot Contact using email as the unique identifier. Email is used for matching; every other selected value becomes a Contact property.

Troubleshoot HubSpot
Properties cannot be loaded
Confirm the private app includes crm.schemas.contacts.read and the token is current.
Contacts cannot be written
Add crm.objects.contacts.write to the private app, then re-verify the connection.
Dropdown option warning
The HubSpot property must contain matching active options. Add the options or map the Kulario value to a text property.

Destination guide

Salesforce

Route qualified buyer context into Salesforce Leads with explicit required-field and field-level permission checks.

Destination

Lead

Identity

Email

Delivery

Mapped fields only

Prepare the destination

  • Create a dedicated integration user and permission set with API Enabled.
  • Grant Lead Read, Create, and Edit plus field access to Email, LastName, Company, and every mapped field.
  • In Setup → App Manager, create a local External Client App and enable OAuth.
  • Select Manage user data via APIs (api), enable Client Credentials flow, and save.
  • In External Client Apps Manager, configure the dedicated integration user as the Run As user.
  • Copy the Consumer Key, Consumer Secret, and the production My Domain URL.
Kulario Salesforce connection form showing the My Domain URL, Consumer key, and Consumer secret fields
Kulario UI with synthetic, redacted values. Provider interfaces may change; use the linked official guidance for provider-side navigation.

Connect and activate

  1. 1

    Open Integrations in Kulario and choose Connect Salesforce.

  2. 2

    Enter the production My Domain URL, Consumer Key, and Consumer Secret.

  3. 3

    Choose Verify & save. Kulario authenticates and imports writable Lead fields.

  4. 4

    In Capture & activate → Contact gate, collect and require Work email, Last name, and Company.

  5. 5

    Open Capture & activate → Destinations and select Primary Salesforce.

  6. 6

    Confirm the three required mappings and map any additional fields required by your Salesforce Lead schema.

  7. 7

    Turn on Send completed responses and save the destination.

Required mapping

  • Work email → Email
  • Last name → LastName
  • Company → Company

What happens after completion

Kulario searches Salesforce Leads by email. One match is updated, no match creates a Lead, and multiple matches stop delivery with an actionable ambiguity error.

Troubleshoot Salesforce
Lead fields cannot be loaded
Check API access, Lead object permissions, field-level security, the Run As user, and External Client App policy.
Additional required-field warning
Your Lead schema requires that field when creating a record. Map it from a Kulario field that is always collected and required.
More than one Lead has this email
Deduplicate or merge the Leads in Salesforce, then retry the failed delivery from the connection menu.

Destination guide

Signed webhooks

Send a verified context event to a data warehouse, automation platform, routing service, or any public HTTPS receiver.

Destination

JSON event

Identity

Event ID

Delivery

Mapped fields only

Prepare the destination

  • Expose a public HTTPS endpoint that accepts JSON POST requests.
  • Keep the exact raw request body available until after signature verification.
  • Store the signing secret securely and compare signatures in constant time.
  • Return a 2xx response only after accepting the event.
  • Use Idempotency-Key or Kulario-Event-Id to deduplicate retries.
Kulario signed webhook connection form showing destination name and HTTPS endpoint fields
Kulario UI with synthetic, redacted values. Provider interfaces may change; use the linked official guidance for provider-side navigation.

Connect and activate

  1. 1

    Open Integrations in Kulario and choose Connect Signed webhook.

  2. 2

    Enter a Destination name and public HTTPS endpoint.

  3. 3

    Choose Create signing secret, copy the whsec_ value, and add it to the receiver.

  4. 4

    Use the receiver verification example below or your own HMAC-SHA256 implementation.

  5. 5

    Choose Send signed test & save. Any 2xx response to endpoint.test verifies the receiver.

  6. 6

    In Capture & activate → Destinations, select the webhook and choose exactly which fields may leave Kulario.

  7. 7

    Turn on Send completed responses and save the webhook.

Required mapping

  • At least one available Kulario field

What happens after completion

Kulario sends an HMAC-SHA256 signed JSON envelope containing only the fields selected for that webhook. Stable event and idempotency IDs let receivers deduplicate retries.

Completion event

{
  "id": "delivery-id",
  "type": "submission.completed",
  "apiVersion": "2026-07-01",
  "createdAt": "2026-07-11T12:00:00.000Z",
  "data": {
    "submissionId": "submission-id",
    "resultUrl": "https://kulario.com/e/example/r/...",
    "fields": {
      "contact.email": "buyer@example.com",
      "result.overall-score": 72,
      "result.band": "Advancing"
    }
  }
}

Node signature verification

import { createHmac, timingSafeEqual } from "node:crypto";

export function verifyKulario(rawBody, header, secret) {
  const parts = Object.fromEntries(
    header.split(",").map((part) => part.split("="))
  );
  const timestamp = Number(parts.t);
  if (!Number.isSafeInteger(timestamp) ||
      Math.abs(Date.now() / 1000 - timestamp) > 300) return false;

  const key = Buffer.from(secret.slice("whsec_".length), "base64url");
  const expected = createHmac("sha256", key)
    .update(String(timestamp) + "." + rawBody, "utf8")
    .digest("hex");

  return /^[a-f0-9]{64}$/i.test(parts.v1 ?? "") &&
    timingSafeEqual(Buffer.from(parts.v1, "hex"), Buffer.from(expected, "hex"));
}
Troubleshoot Signed webhooks
Endpoint rejected
Use a publicly reachable HTTPS URL. Localhost, private-network destinations, and plain HTTP are rejected.
Signature mismatch
Verify the raw body before parsing JSON and sign timestamp.rawBody, not a reserialized object.
Duplicate event
Deduplicate using Idempotency-Key or Kulario-Event-Id. Kulario reuses both identifiers across retry attempts.

Experience activation

Map the context this campaign needs.

Kulario stores the complete submission. Each destination receives only the source fields that an editor explicitly pairs with writable external fields.

  1. 1

    Open the experience builder and choose Capture & activate → Destinations.

  2. 2

    Select a connected provider or signed webhook.

  3. 3

    Choose Auto-match for CRM/MAP destinations or Suggest for a webhook.

  4. 4

    Use the searchable Kulario and destination dropdowns to review every pair.

  5. 5

    Add result, answer, and custom fields only when that downstream team will use them.

  6. 6

    Turn on Send completed responses and save the destination.

Explicit by design

Unmapped fields remain in Kulario. An unanswered optional field is omitted instead of clearing an existing CRM value.

Kulario field mapping editor showing Work email, Overall score, Result band, and Primary gap mapped to HubSpot Contact properties
A campaign-specific mapping. Search supports large destination schemas; Kulario validates type, writability, length, required fields, and picklist options.

Fields available to map

GroupExamplesAvailability
ContactFirst name, last name, work email, company, job titleWhen selected in the contact gate
ResultsOverall score, band, primary gap, recommended play, result URLEvery completion
AnswersEvery assessment, calculator, or maturity questionWhen the buyer provides a value
CustomText, email, number, dropdown, checkboxUp to 12 per experience

Control by design

Consent-gated, durable delivery.

The buyer's result is never held hostage by an external system. Kulario saves first, checks eligibility, then delivers asynchronously.

Explicit consent

A buyer can receive the result without agreeing to marketing. External delivery requires marketing consent.

Encrypted credentials

Provider credentials and webhook secrets are encrypted and remain write-only in the interface.

Durable retries

Retryable failures use an idempotent delivery record and exponential retries without duplicating the buyer event.

Complete receipt retained

The full response stays in Kulario even when no destination is connected or an external delivery is unavailable.

01

Saved

02

Eligibility

03

Mapped payload

04

Durable queue

05

External upsert

Common fixes

Resolve mapping and delivery issues.

Most activation problems come from missing permissions, a field that does not exist externally, or an identity field that is optional in the experience.

What you seeWhat to do
Admin access requiredAsk a workspace owner or admin to connect or manage credentials.
No destinations appearConnect at least one provider from the workspace Integrations page.
Add marketing consent textOpen Capture & activate → Contact gate and complete Marketing consent.
Not collected in this experienceEnable the contact field or restore the deleted assessment question.
Destination field is missingCreate it externally, grant access, and re-verify the connection.
Types are incompatibleMap number to number/text, lists to multi-select/text, and text to text or a compatible enum.
Enum values are unmappedAdd matching active external options or choose a text field.
A test completion did not syncExpected: test and Demo Lab traffic never delivers. Use a consented live completion.

Activate when you are ready

Build the experience first. Send the right context next.

Connect the stack once, then let every experience choose exactly what its next step needs.