A2P 10DLC Campaign Rejection Reasons and Fixes
When an A2P 10DLC campaign is rejected in Sparkforge, click View required fixes on each rejection reason. The modal lists the error code, category, plain-language meaning, and the correction you need before resubmitting.
An A2P 10DLC rejection used to surface as a one-line message that left you guessing. Sparkforge now exposes a structured fix view: error code, rejection category, plain-language meaning, and the exact correction needed. Read it, fix it, resubmit.
How to view required fixes
- Open your A2P campaign submission in Sparkforge.
- Find the rejected campaign and the listed rejection reasons.
- Click View required fixes next to a rejection reason.
- Review the four fields in the modal: error code, rejection category, what it means, correction needed.
- Make every correction listed.
- Resubmit once all issues are addressed.
A campaign can have more than one rejection reason. Open View required fixes for each one and address every issue before resubmitting.
Resubmittable rejection codes
The codes below can be fixed and resubmitted. Apply the correction, update your campaign registration, and resubmit.
Opt-in and consent
| Code | Meaning | Fix |
|---|---|---|
| 30909 | CTA or message flow not verifiable | Provide complete CTA info and every consent method. Include hosted screenshots if behind a login. |
| 30913 | Marketing consent bundled with informational consent | Add separate consent for promotional messages. If you only send transactional, clarify in the campaign description. |
| 30917 | Multiple opt-in methods listed without descriptions | Update opt-in workflow description to cover every method. |
| 30923 | Consent bundled into mandatory terms | Make opt-in a separate, optional action. Users must be able to decline messaging and still use the service. |
| 30924 | Missing required disclosures | Near the opt-in checkbox add: message type, frequency, "message and data rates may apply," and STOP instructions. |
| 30925 | Missing checkbox or pre-selected checkbox | Add an unchecked-by-default SMS consent checkbox. |
| 30931 | Form mechanics prevent declining | Add an explicit skip option or unchecked checkbox. A single button cannot grant all permissions. |
| 30932 | Privacy policy shares opt-in data with third parties | Update privacy policy to state mobile information will not be shared with third parties for marketing. |
| 30896 | Opt-in workflow insufficient or shared with third parties | Verify opt-in meets CTIA guidelines. List all methods. Confirm data is not shared. |
What good consent looks like
- Separate, unchecked checkbox for SMS consent.
- Disclosure of message type and frequency near the checkbox.
- "Message and data rates may apply" language.
- STOP instructions for opting out.
- Privacy policy that explicitly excludes mobile info from third-party marketing sharing.
- Hosted screenshots of the opt-in flow if any step lives behind a login.
After resubmission
If the campaign is rejected again with a different code, repeat the process. Open View required fixes, apply the correction, and resubmit. The structured fix view is the fastest path to approval.
Frequently Asked Questions
Where do I find the new rejection fix view?
What does the View required fixes modal show?
Can a campaign have more than one rejection reason?
What are the four required disclosures near an opt-in checkbox?
Why does my privacy policy keep getting flagged?
Was this article helpful?
Thanks for the feedback.