Adds five Domain Connect templates so customers can one-click-provision
DNS for the NeedTexting product family on Cloudflare and other
participating providers.
- needtexting.com.needinbox.email.json — sending email (MX, SPFM, DKIM, DMARC, return-path A, tracking A)
- needtexting.com.needpolling.email.json — poll-invite sending (MX, SPFM, DKIM, DMARC)
- needtexting.com.needvotes.site.json — campaign site at custom domain (apex A, www CNAME, ownership TXT)
- needtexting.com.needdonors.site.json — donation page subdomain (donate CNAME, ownership TXT)
- needtexting.com.needwebpage.site.json — AI-built site at custom domain (apex A, www CNAME, ownership TXT)
All five share syncPubKeyDomain=needtexting.com. Public key TXT lives at
_dcsig._domainconnect.needtexting.com in the spec format
(p=N,a=RS256,d=<chunk>, ≤255 chars per chunk, two chunks total). Roundtrip
sign/verify checked locally.
Validated against template.schema (jsonschema Draft7Validator). SPF
records use SPFM. DMARC records carry txtConflictMatchingMode=Prefix and
essential=OnApply so end users can adjust policy. DKIM records use a
fixed v=DKIM1; k=rsa; p= prefix on the data field.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Description
Adds five Domain Connect templates so customers can one-click-provision DNS for the NeedTexting product family on Cloudflare and other participating providers.
needtexting.com.needinbox.email.jsonneedtexting.com.needpolling.email.jsonneedtexting.com.needvotes.site.jsonneedtexting.com.needdonors.site.jsonneedtexting.com.needwebpage.site.jsonAll five share
syncPubKeyDomain=needtexting.com. Public-key TXT record lives at_dcsig._domainconnect.needtexting.comin the spec format (p=N,a=RS256,d=<chunk>, two chunks, each ≤255 chars). Local sign/verify roundtrip against the matching private key passes (PKCS#1 v1.5 / SHA-256).The Cloudflare review (Sami Kerola) flagged the original key format and a logo 404; both fixed before this PR.
Type of change
How Has This Been Tested?
<providerId>.<serviceId>.jsonlogoUrlis actually served by a webserver —https://needtexting.com/assets/logo-square.png(HTTP 200, 512×512 PNG)Checklist of common problems
syncPubKeyDomainis set on all five templateswarnPhishingis not setsyncRedirectDomainis set on all fiveSPFMusedtxtConflictMatchingMode=Prefixset on DMARC and ownership-verification TXT recordsv=DKIM1; k=rsa; p=%DKIM_PUBKEY%; ownership-verification TXTs have fixed prefixneedvotes-verify=%TOKEN%(etc.)hostuses fixed._domainkeysuffix (%DKIM_SELECTOR%._domainkey); not barehostfield creates a subdomain%host%does not appear explicitly in anyhostattributeessential=OnApplyset on DMARC records (end user may want to tighten/loosen policy without removing the template)Online Editor test results
To be added in a follow-up comment after running the editor against each template (per AGENTS.md these must come from real test runs, not be fabricated).
Notes
template.schemausingDraft7Validator.