Skip to content

Add Recruitly SendGrid email-authentication template#1448

Open
willgary wants to merge 4 commits into
Domain-Connect:masterfrom
willgary:add-recruitly-sendgrid-auth
Open

Add Recruitly SendGrid email-authentication template#1448
willgary wants to merge 4 commits into
Domain-Connect:masterfrom
willgary:add-recruitly-sendgrid-auth

Conversation

@willgary

@willgary willgary commented Jul 22, 2026

Copy link
Copy Markdown

Description

New template for Recruitly email domain authentication (SendGrid-backed). Adds the three link-branding / DKIM CNAME records required to authenticate a sending domain, applied together via the synchronous flow. Record values are supplied per-domain from the SendGrid domain-authentication API by our service (dnsconnect.recruitly.app), and the apply request is RS256-signed (public key published at k1.dcsig.recruitly.io).

Type of change

  • New template

How Has This Been Tested?

  • Template functionality checked using Online Editor (apex + subdomain, see links below)
  • Template file name follows the pattern <providerId>.<serviceId>.json
  • resource URL provided with logoUrl is actually served — N/A, no logoUrl set

Checklist of common problems

  • syncPubKeyDomain is set (dcsig.recruitly.io; signing public key published at k1.dcsig.recruitly.io, RS256)
  • warnPhishing is not set
  • syncRedirectDomain is set (dnsconnect.recruitly.app)
  • no TXT record contains SPF content — all three records are CNAME
  • txtConflictMatchingMode — N/A, no TXT records
  • no variable used as a bare full record value — N/A, no TXT records
  • bare variable used as full host label — JUSTIFIED: SendGrid issues per-domain dynamic hostnames (e.g. em3913, s1._domainkey) that vary per authenticated domain and are not known ahead of time. The values are fetched from SendGrid's domain-authentication API and the apply request is cryptographically signed via syncPubKeyDomain, so the bare-variable hosts cannot be tampered with.
  • no variable used in host to create a subdomain — single-label / selector records only
  • %host% does not appear in any host attribute
  • essential OnApply — N/A, all three CNAMEs are mandatory and applied as one set

Online Editor test results

Editor test link(s):

@willgary
willgary marked this pull request as ready for review July 22, 2026 11:38
@willgary

Copy link
Copy Markdown
Author

Heads-up:

All checks here are failing at the checkout step (pull_request_target refusing fork code since GitHub's Sept-2025 change), so the template itself was never validated by CI.

It does validate cleanly against template.schema locally and in the Online Editor (apex + subdomain test links in the description).

Could a maintainer take a manual look / re-run? Please.

Thanks!

@JMJBILLINGS

Copy link
Copy Markdown

Same failure on every fork PR right now (checkout step, pull_request_target policy) - diagnosis in #1445, five-line workflow fix awaiting maintainer review in #1446.

@github-actions

Copy link
Copy Markdown

Linter OK

recruitly.io.sendgrid-email-auth.json

Level Code Note

@github-actions

Copy link
Copy Markdown

JSON Filename Check Passed

@github-actions

Copy link
Copy Markdown

JSON Schema Validation Passed

@github-actions

Copy link
Copy Markdown

PR Description Check Passed

All required sections are filled in correctly.

Details
  OK  Type of change: 1/1 checkboxes ticked
  OK  How Has This Been Tested?: all 3 checkboxes ticked
  OK  Checklist of common problems: 9/10 checkboxes ticked
  OK  Online Editor test results: 2 link(s) found
  OK  Template coverage: all 1 template(s) covered
Labels to remove: Checklist of common problems not complete, Forged editor links, PR description incomplete, Test links missing

PR description check PASSED

@pawel-kow
pawel-kow enabled auto-merge July 24, 2026 12:13
"syncRedirectDomain": "dnsconnect.recruitly.app",
"records": [
{ "type": "CNAME", "host": "%mailhost%", "pointsTo": "%mailtarget%", "ttl": 3600 },
{ "type": "CNAME", "host": "%dkim1host%", "pointsTo": "%dkim1target%", "ttl": 3600 },

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dkim host names have a pre-defined structure, so bare host could be avoided.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants