Adapters that resolve a CRM contact in the account's location (looking up by email or phone first, creating only when needed) and post the message to the conversations endpoint. The From identity is deliberately not set, so the CRM uses the identity configured at the tenant's own location.
Also called: send from my CRM · GHL conversations · sender identity
- 1The adapter resolves the account's credentials.
- 2It searches for an existing contact by email, then by normalised phone, to avoid duplicates.
- 3If none exists it creates one, tagged so tenant automations can exclude app-created contacts.
- 4A duplicate-create race re-runs the lookup rather than failing.
- 5The message is posted to the conversations endpoint; an HTTP rejection is non-retryable, a network exception is retryable.
The From decision is called out explicitly: 'Deliberately NO emailFrom — GHL uses the From identity configured at the tenant's own location, which is the correct multi-tenant sender.' The lookup-before-create order is also deliberate: it is 'correct even if the caller's contactId belongs to a different location'.
- A shared sender identity would have made every builder's mail look like the platform's.
- Creating before looking up produced duplicate CRM contacts.
- A contact id from another location would have addressed the wrong record.
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →