Leads

Create a referral

Create a referral (lead) for an existing partner.

Identifying the partner

Supply exactly one of partner_lasso_key, partner_slug, partner_id, partner_name, or the partner_external_system_type + partner_external_object_type + partner_external_identifier triple.

partner_lasso_key is the Lasso Partner Key (P-A1B2C3). It is generated when the partner is created and can never change, so it is the right value to store on your own partner records. Slugs are editable and names are not unique.

Identifying the referred prospect

email is required, and so is a name: contact_name, company_name, or both.

Linking to your CRM

Passing a CRM deal, opportunity or lead ID (hubspot_deal_id, salesforce_opportunity_id, salesforce_lead_id, pipedrive_deal_id) links the referral to that record as it is created. Once linked, changes in your CRM flow to the referral, so you do not need to send updates yourself.

If your Salesforce org tracks referrals on a custom object, pass that record's ID as salesforce_custom_referral_object_id. It can be sent on its own or together with an opportunity or lead ID, and every ID sent is linked.

Idempotency

This endpoint is idempotent on those deal, opportunity, lead and custom referral object IDs. If a referral already carries the ID you send, that referral is returned with 200 OK and nothing is created, so a retried workflow is safe. Nothing else in the request is applied to it; warnings lists what was skipped. If it belongs to a different partner than the one you named, you get a 409 instead. Contact and company IDs are not used for this, because separate referrals can share one company.

Recording history

status, closed_won_at, skip_rewards and backfill let you import referrals that already happened. They apply only when the referral is created, never on a 200 match.

Partner contacts and rewards

If every reward on the partner's reward plan pays the partner contact and you name no contact, the referral would earn nothing, so the request is refused with 422 unless skip_rewards is set. If only some do, the referral is created and the skipped rewards are listed in warnings.

Requires partners_edit permission.

post/leads

Request

  • Base URL: https://api.lassotech.com/api/v1/rest
  • URL: https://api.lassotech.com/api/v1/rest/leads
  • Auth: API key in header x-lasso-access-token

Request body

partner_lasso_keystring

Lasso Partner Key of the partner earning this referral (recommended)

partner_slugstring

Partner slug. Editable, so prefer partner_lasso_key.

partner_idstring

Partner ID

partner_namestring

Partner name, exact match. Fails if more than one partner matches.

partner_external_system_typestring

External system to resolve the partner by, e.g. HUBSPOT

partner_external_object_typestring

External object type to resolve the partner by

partner_external_identifierstring

External record ID to resolve the partner by

emailstring required

Contact email of the referred prospect

contact_namestring

Contact name. Falls back to company_name when omitted; one of the two is required.

company_namestring

Company name of the referred prospect

websitestring
phone_numberstring
amountnumber

Estimated deal amount. Overwritten by the CRM value when a CRM opportunity ID is supplied.

expected_close_datestring date
internal_notesstring
external_notesstring

Notes visible to the partner

expires_atstring date-time

Defaults to the account's referral expiration setting

partner_member_slugstring

Attribute the referral to a specific contact under the partner, by Lasso Partner Contact Key. Required when the partner's reward plan pays the Partner Contact: without it those rewards are not applied. Supply at most one partner_member_* selector; slug wins over email, which wins over a CRM contact id.

partner_member_emailstring email

Attribute the referral to a partner contact by email, resolved within the named partner.

partner_member_hubspot_contact_idstring

Attribute the referral to a partner contact by HubSpot contact ID. Distinct from hubspot_contact_id, which is the referred prospect's contact.

partner_member_salesforce_contact_idstring

Attribute the referral to a partner contact by Salesforce contact ID.

partner_member_pipedrive_person_idstring

Attribute the referral to a partner contact by Pipedrive person ID.

status'open' | 'accepted' | 'qualified' | 'closed_won' | 'closed_lost' | 'rejected'

Create the referral directly in this status, for recording history. Defaults to open (or accepted when the partner type accepts referrals automatically). Not accepted on update; use the mark_as_* fields there.

The referral passes through the usual steps to get there, so rewards and invoices for each step are generated as normal. closed_won goes through accepted, not qualified, so a reward paid on qualification is not generated. An unknown value is a 400. If the status cannot be applied, the referral is still created and a STATUS_NOT_APPLIED warning says what state it was left in.

closed_won_atstring date-time

The historical close date, for a backfilled won deal. Only valid with status=closed_won, must be an ISO 8601 timestamp, and cannot be in the future; anything else is a 400. Without it the close date is the time of the request, and billing that starts from the close date starts from then.

skip_rewardsboolean

Do not copy rewards from the partner's plan and do not generate invoices, for history whose commission was already settled outside Lasso. The suppression is durable: later state changes on this referral will not regenerate them.

backfillboolean

Do not send notifications, fire webhooks, or sync this referral out to your CRM. Use when recording a referral the source system already holds, so it is not echoed back. Independent of skip_rewards: a backfilled referral still earns commission.

hubspot_deal_idstring

HubSpot deal ID. Links the referral and acts as the idempotency key.

hubspot_contact_idstring
hubspot_company_idstring
salesforce_opportunity_idstring

Salesforce opportunity ID. Links the referral and acts as the idempotency key.

salesforce_account_idstring
salesforce_lead_idstring

Salesforce lead ID. Links the referral and acts as the idempotency key.

salesforce_contact_idstring
salesforce_custom_referral_object_idstring

Salesforce ID of a record on your custom referral object (for example a Partner Engagement). Links the referral and acts as an idempotency key, alongside any opportunity or lead ID sent with it.

pipedrive_organization_idstring
pipedrive_person_idstring
pipedrive_deal_idstring

Pipedrive deal ID. Links the referral and acts as the idempotency key.

Example request

{
  "partner_lasso_key": "P-A1B2C3",
  "partner_slug": "acme-corp",
  "partner_external_system_type": "HUBSPOT",
  "partner_external_object_type": "custom_partner_object",
  "email": "jane@leadco.com",
  "contact_name": "Jane Doe",
  "company_name": "Lead Inc",
  "website": "https://leadco.com",
  "amount": 24000,
  "expected_close_date": "2026-11-30",
  "partner_member_slug": "PC-A1B2C3",
  "partner_member_email": "contact@partner.com",
  "status": "closed_won",
  "closed_won_at": "2026-06-01T12:00:00Z",
  "hubspot_deal_id": "12345",
  "salesforce_custom_referral_object_id": "a0X5e00000AbCdEFGH"
}

Response

A referral already existed for the supplied CRM opportunity ID and was returned unchanged. Nothing else in your request was applied, so warnings lists anything you asked for that differs from the existing referral. Use PUT /leads/{identifier} to change it.

Example response

{
  "lead": {
    "slug": "abc-123",
    "source_type": "referral_link",
    "company_name": "Lead Company",
    "contact_name": "Jane Doe",
    "email": "jane@leadco.com",
    "partner_slug": "acme-corp",
    "partner_lasso_key": "P-A1B2C3",
    "partner_member": {
      "slug": "PC-A1B2C3"
    },
    "currency_code": "USD",
    "billing_start_date": "2026-10-01"
  },
  "warnings": [
    {
      "field": "partner_member",
      "message": "SKIPPED_REWARDS: Referral Bonus pays the partner contact and no partner contact was supplied, so it was not applied to this referral."
    }
  ]
}

Changes

No recorded changes to this operation across all 1 revision of this API.