What You’ll Do
- Send an outbound iMessage from a Lead record using the
chertConversationLightning component. - Confirm the send wrote a
Chert_Message__crow with the correctDirection__candChert_Message_Id__c. - Receive a reply on the recipient device and watch it appear on the same record.
Before You Begin
| Requirement | How to verify |
|---|---|
| Sandbox or Developer Edition Org | A scratch org or partner Developer Edition works. Don’t run this in production on day one. |
| Package installed | From Setup, enter Installed Packages (for 2GP) or check that Apex classes prefixed Chert exist. See Install. |
| Tenant credentials configured | Chert_Tenant.Default Custom Metadata holds non-empty Tenant_Slug__c, Signing_Secret__c, and Ingest_Token__c. See Configuration. |
| Permission Set assigned | The user running the tutorial holds Chert Messaging User. |
| Lead Record Page activated | Lead_Record_Page_Chert is the active record page for your profile. |
| Recipient device | A phone or Mac you can read iMessage on. iMessage must be enabled on that device. |
Outbound calls leave Salesforce and hit the live Chert messaging
service. The send is real. Use a phone number you control as the
recipient.
Step 1: Open a Test Lead
Open any Lead record
From the App Launcher, open Sales, click Leads, and pick a
Lead. If your sandbox is empty, click New and create one named
Tutorial Lead with a recipient mobile number you control.Confirm MobilePhone is set in E.164 format
The component reads
Lead.MobilePhone. Set it to the recipient’s
number in E.164 format — for example, +14155551234. If
MobilePhone is empty, paste the number into the field and save.Locate the Chert Conversation pane
Scroll the right rail. The Chert Conversation Lightning
component appears with an empty thread and a message composer at
the bottom. If it’s missing, the Lead Record Page is not active
for your profile — see Configuration.
Step 2: Send Your First Message
Type a short test message
Use something obvious so you can spot it on the recipient device,
e.g.
Tutorial test from Salesforce.Click Send
The component disables the composer for the duration of the
callout. On success, the message renders in the conversation
thread with a timestamp and an outbound chevron.
Step 3: Verify in Salesforce
Open the Chert Messages related list
From the Lead record, scroll to the Chert Messages related
list. A new
Chert_Message__c row appears.Confirm the field values
Click into the row. You should see:
| Field | Expected value |
|---|---|
Direction__c | outbound |
Text__c | The message body you typed |
Sent_At__c | A timestamp within the last few seconds |
Chert_Message_Id__c | A non-empty Chert-side message ID |
Delivered__c | false initially; flips to true once the recipient device acknowledges |
Step 4: Receive a Reply
Reply from the recipient device
On the iMessage thread on your phone or Mac, send a short reply
back to the Chert phone line — for example,
got it.Wait for the inbound POST
Chert posts the reply to your Org’s
ChertInboundRest resource.
Delivery is typically under five seconds.Refresh the Lead record
The conversation pane updates on next load. The
Chert Messages
related list shows a new row with Direction__c = inbound and
Text__c matching what the recipient sent.Verify Yourself
Answer these to confirm you’ve internalized the round-trip. The answers are linked into the reference docs.- Which Apex action does
chertConversationinvoke to send a message? (Configuration) - Which custom object stores the per-message audit row, and what field captures the Chert-side message ID? (Architecture)
- Where is the HMAC signing secret stored, and which Apex class reads it at send time? (Security)
- What’s the dedup window for an
idempotencyKey, and whatduplicatevalue should Flow logic treat as success? (Limits and Considerations) - Which Permission Set must a user hold to send through
ChertSendIMessage, and what object grants does it carry? (Configuration)
Next
Architecture
Component map and the synchronous-versus-asynchronous call graph.
Security
Trust boundary, HMAC signature format, and inbound verification.
Limits and Considerations
Governor math, edition fit, and platform-feature compatibility.

