On this page
1. Freeze a small evidence set
Choose a recent failure and, if available, a successful message from the same period. Preserve the evidence before changing sender routing, workflow content or campaign associations.
| Record | What to capture | Why it matters |
|---|---|---|
| Setup | Platform, account/subaccount and LC Phone versus direct Twilio | Prevents inspecting a different account |
| Attempt | Timestamp with timezone; manual, workflow or API | Aligns logs and configuration history |
| Message | Message identifier; current status; exact error | Provides a traceable provider record |
| Actual sender | Number shown on the message, not only the intended default | Exposes routing differences |
| Destination | Private recipient reference; consent/suppression state at the time | Helps distinguish recipient-specific behavior |
| Content | Purpose and exact test-message version, retained privately | Makes comparisons interpretable |
| Changes | Recent sender, workflow or registration changes and timestamps | Separates current settings from settings used during the failure |
- Record
- Setup
- What to capture
- Platform, account/subaccount and LC Phone versus direct Twilio
- Why it matters
- Prevents inspecting a different account
- Record
- Attempt
- What to capture
- Timestamp with timezone; manual, workflow or API
- Why it matters
- Aligns logs and configuration history
- Record
- Message
- What to capture
- Message identifier; current status; exact error
- Why it matters
- Provides a traceable provider record
- Record
- Actual sender
- What to capture
- Number shown on the message, not only the intended default
- Why it matters
- Exposes routing differences
- Record
- Destination
- What to capture
- Private recipient reference; consent/suppression state at the time
- Why it matters
- Helps distinguish recipient-specific behavior
- Record
- Content
- What to capture
- Purpose and exact test-message version, retained privately
- Why it matters
- Makes comparisons interpretable
- Record
- Changes
- What to capture
- Recent sender, workflow or registration changes and timestamps
- Why it matters
- Separates current settings from settings used during the failure
If a field is unavailable, write unknown. Do not infer a Message SID from a workflow execution ID; they identify different records.
In HighLevel, inspect the failed message in Conversations and its error details. For automation, also inspect the workflow execution at the time of the attempt. HighLevel’s common SMS error guide warns against repeatedly resending without identifying the cause.
2. Follow the diagnostic decision tree
Start at D1. Each row tells you where to go next; reaching a branch identifies the next investigation, not a guaranteed diagnosis.
| Step | Question | Yes | No / unknown |
|---|---|---|---|
| D1 | Is there a platform send attempt or provider message record? | Go to D2. | Branch A: inspect execution and record visibility. |
| D2 | Is the exact returned error 30034? | Branch B: verify the actual sender association. | Go to D3. |
| D3 | Is the exact returned error 30035? | Branch C: inspect number configuration status. | Go to D4. |
| D4 | Is the exact returned error 30007? | Branch D: investigate filtering. | Go to D5. |
| D5 | Is another error or restriction reported? | Branch E: use that provider definition and restriction details. | Branch F: examine status progression and missing delivery evidence. |
- Step
- D1
- Question
- Is there a platform send attempt or provider message record?
- Yes
- Go to D2.
- No / unknown
- Branch A: inspect execution and record visibility.
- Step
- D2
- Question
- Is the exact returned error 30034?
- Yes
- Branch B: verify the actual sender association.
- No / unknown
- Go to D3.
- Step
- D3
- Question
- Is the exact returned error 30035?
- Yes
- Branch C: inspect number configuration status.
- No / unknown
- Go to D4.
- Step
- D4
- Question
- Is the exact returned error 30007?
- Yes
- Branch D: investigate filtering.
- No / unknown
- Go to D5.
- Step
- D5
- Question
- Is another error or restriction reported?
- Yes
- Branch E: use that provider definition and restriction details.
- No / unknown
- Branch F: examine status progression and missing delivery evidence.
Branch A: no visible send attempt
Check whether the test contact entered the intended workflow, reached the SMS action and met its conditions. Record whether it was waiting, skipped, suppressed or failed. Compare the contact and sender selected at that point with what you intended.
If you can see an execution but cannot see a message record, first rule out the wrong account, time filter or missing log access. Absence from the screen you can access is not proof that no provider request exists. Ask platform support to trace the execution if necessary.
Exit: identify an execution-level issue or obtain a message record/error and return to D2. Do not resubmit the A2P campaign solely because a workflow did not reach its send step.
Branch B: 30034, unregistered sender association
Twilio defines 30034 as sending from a number not associated with an approved A2P campaign. In direct Twilio, trace these three links:
- 1
Message → number: which
Fromnumber actually sent the failed message? - 2
Number → Messaging Service: is that number in the intended service’s Sender Pool?
- 3
Messaging Service → campaign: is that service associated with the intended approved campaign?
Also inspect number-level registration status. A campaign badge alone does not answer these questions. Twilio’s Sole Proprietor campaign path supports one registered 10DLC sender per campaign; do not assume every added number is covered.
For LC Phone, use the account’s available sender/registration views and HighLevel support rather than assuming you can edit the underlying Twilio account.
Exit: document the confirmed association or the unresolved link. If the records appear correct but the error persists, escalate that trace instead of moving numbers repeatedly.
Branch C: 30035, number still being configured
Twilio’s 30035 documentation distinguishes pending registration or deregistration from a completed registered state. It advises against removing and re-adding the number as a reaction to this error. Its current guidance allows up to 24 hours for processing and directs users to Support if pending persists beyond that period; this is provider guidance, not an activation guarantee.
Record the last assignment change and current number status. Follow the relevant account’s support route if configuration remains unresolved.
Exit: a confirmed registered state and an appropriate limited retest, or a support investigation. Do not “fix” a processing delay with repeated reassignment.
Branch D: 30007, filtering
Twilio describes 30007 as filtering by Twilio or a carrier. Review message purpose, recipient consent, content and the affected pattern. The code does not, by itself, reveal the particular word or rule that caused filtering.
If you believe the traffic meets the applicable policies, Twilio asks for at least three Message SIDs with undelivered status and error 30007 for support review. Use existing failures; do not generate repeated unwanted sends to reach a sample count.
Exit: a supported correction to the messaging practice or a provider review with evidence. Do not rotate numbers or disguise content to bypass filtering.
Branch E: another error or account restriction
Read that exact error’s official definition. Check the affected sender, recipient and account state before retrying. A recipient issue, unsupported media type, suppression or account restriction is not automatically an A2P registration defect.
Exit: follow the documented correction or escalation route for the actual condition. Do not force every failed message into 30007 or 30034.
Branch F: no useful error, or a status that has not resolved
Record when the status last changed and whether the platform exposes later updates. Direct Twilio integrations can use message status callbacks to capture lifecycle changes. A “sent” label is not evidence that a person read the message.
Compare destination patterns and gather the message IDs for provider investigation. One successful handset test does not establish delivery across all destinations.
Exit: a later status/error, a documented recipient-specific issue or a support trace. Keep “cause unknown” if the evidence does not resolve it.
3. Reproduce manual-versus-workflow differences
Use an authorized test contact with valid consent for the test message. Keep the account, intended sender, destination and content constant where the platform allows. Record the actual values afterward; a requested sender and the selected sender may differ.
- 1
Save the current configuration and test-message version.
- 2
Send one appropriate manual test and capture its record.
- 3
Trigger one isolated workflow test for the same purpose. Avoid enrolling the contact into unrelated production sequences.
- 4
Compare actual sender, rendered content, execution time, suppression state, status and error.
- 5
Change only one evidence-supported variable, document it and repeat only the necessary test.
- 6
Stop if the recipient is opted out, a restriction is active or the failure remains unexplained. Do not clear a real opt-out to make a test pass.
| Run | Route | Actual sender | Message version | Execution / message ID | Status + error | Next check | |
|---|---|---|---|---|---|---|---|
| A | Manual | ______ | ______ | ______ | ______ | ______ | |
| B | Workflow | ______ | ______ | ______ | ______ | ______ | ______ |
| C | After one documented correction | ______ | ______ | ______ | ______ | ______ |
- Run
- A
- Route
- Manual
- Actual sender
- ______
- Message version
- ______
- Execution / message ID
- ______
- Status + error
- ______
- Next check
- ______
- Run
- B
- Route
- Workflow
- Actual sender
- ______
- Message version
- ______
- Execution / message ID
- ______
- Status + error
- ______
- Next check
- ______
- ______
- Run
- C
- Route
- After one documented correction
- Actual sender
- ______
- Message version
- ______
- Execution / message ID
- ______
- Status + error
- ______
- Next check
- ______
If the routes produce different content or sender selection, the comparison is not yet controlled. That difference is something to investigate, not proof that the workflow engine or carrier is at fault.
Hypothetical example: manual works, automation fails
Illustration only. This is not a client case, live log or demonstrated resolution.
| Run | Observation | Supported interpretation |
|---|---|---|
| Manual | Sender A; delivered status | That attempt progressed successfully according to the recorded status. |
| Workflow | Sender B; error 30034 | Investigate Sender B’s association before changing message copy. |
| Configuration review | Workflow sender setting differs from intended Sender A | A configuration difference exists; confirm the intended sender and its eligibility. |
- Run
- Manual
- Observation
- Sender A; delivered status
- Supported interpretation
- That attempt progressed successfully according to the recorded status.
- Run
- Workflow
- Observation
- Sender B; error 30034
- Supported interpretation
- Investigate Sender B’s association before changing message copy.
- Run
- Configuration review
- Observation
- Workflow sender setting differs from intended Sender A
- Supported interpretation
- A configuration difference exists; confirm the intended sender and its eligibility.
If both attempts instead used Sender A and the workflow showed no send attempt, return to Branch A. If the workflow returned 30007, use Branch D. Similar symptoms can require different investigations.
4. Escalate with a trace, not “SMS is broken”
Send platform support the account/subaccount, timestamps with timezone, actual sender, message IDs, statuses/errors, relevant registration state and the single correction already tested. Include a comparison success if available. Keep recipient details and message content private and use the provider’s support channel.
State the unresolved question precisely: “This message used Sender B and returned 30034. Please confirm the number’s association and registration status in this account.” For a missing send, identify the workflow execution instead of inventing a message ID.
If registration itself is rejected, return to the brand failure guide or campaign diagnosis. If the evidence shows the collection process and SMS enrollment disagree, use the opt-in diagnostic tests.
For a scoped investigation, request GoHighLevel help or describe your direct Twilio issue. Send the error and setup details first. Any account access or implementation work must be agreed separately; approval and delivery are not guaranteed.
Official sources
Technical guidance checked 23 October 2026.
Provider rules change. Always confirm against the current official documentation.
Get a clear next step for your A2P 10DLC issue
Whether you are troubleshooting one rejected campaign or trying to create a more reliable A2P process across multiple GoHighLevel sub-accounts, start with the evidence and the actual failure point.