Website report
Visit sitehttps://sendoff.dev/
Sendoff emails your list (newsletters, launches, announcements) from Claude or Codex, self-hosted on your own Cloudflare and AWS accounts and sending through Amazon SES.
Audit Full discovery audit·Language English (en)·Response HTTP 200·Served by Cloudflare
Analysed Nov 8, 2026 · 15 categories · 104 passed · 22 warnings · 2 issues · 22 informational
Audit score
C76/100
Mixed
- Agentic
- 100
- SEO
- 76
What we found
2Needs a fix22Could be better104Looks good22Informational- 1.Needs a fix: HTTP redirects to HTTPS: needs fixing. see checkThese protections reduce risks for your website and its visitors.
- 2.Could be better: Your site does not enforce future HTTPS visits. see checkHSTS keeps returning visitors on a secure connection.
- 3.Could be better: Your page embedding rules need tightening. see checkRestricting embedding helps prevent deceptive clicks on your content.
- 4.Could be better: Browsers can guess file types. see checkThe nosniff header helps stop files from being interpreted as executable code.
- 5.Could be better: Meta description length: needs attention. see checkClear titles and descriptions help people choose your pages in search.
Built with 2 technologies· detected stack
Read from the public source and response headers of the sampled pages.
How it fits together
AstroSite generator
CloudflareCDN / edge
CloudflareCDN / edge
AstroSite generator
A framework or CDN signal describes the public response, not the origin host or private backend.
Site checks
Every observation from the crawl, grouped by what it describes. Open a row for the evidence and the recommended fix.
Metadata1Could be better10Looks good
100/100Could be better: Meta description lengthDescription is 169 characters, over this audit's 160-character review point (a preview heuristic, not a Google limit).
Could be better · Metadata · Review suggested
Observed evidence
Description is 169 characters, over this audit's 160-character review point (a preview heuristic, not a Google limit).
Why this matters
The title and description are the text someone reads in a search result before deciding whether to click. It is there, but weaker than this check expects.
Recommended fix
Front-load the useful summary because Google may generate or truncate snippets by query and device.
Looks good: Page title exists
Looks good · Metadata · Measured on your page
Observed evidence
Title found: "Sendoff — Say “send it.” Sendoff handles the rest."
Why this matters
The title and description are the text someone reads in a search result before deciding whether to click. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Title length
Looks good · Metadata · Review suggested
Observed evidence
Title is 50 characters, inside this audit's 15–60 review range.
Why this matters
The title and description are the text someone reads in a search result before deciding whether to click. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Title says what the site does
Looks good · Metadata · Measured on your page
Observed evidence
Title "Sendoff — Say “send it.” Sendoff handles the rest." says more than the site name.
Why this matters
The title and description are the text someone reads in a search result before deciding whether to click. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Meta description exists
Looks good · Metadata · Measured on your page
Observed evidence
Meta description found: "Sendoff emails your list (newsletters, launches, announcements) from Claude or Codex, self…"
Why this matters
The title and description are the text someone reads in a search result before deciding whether to click. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Titles unique across pages
Looks good · Metadata · Measured on your page
Observed evidence
All 10 indexable sampled pages have distinct titles.
Why this matters
The title and description are the text someone reads in a search result before deciding whether to click. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Show 5 more checks
Looks good: Homepage isn't noindexed
Looks good · Metadata · Measured on your page
Observed evidence
No blocking robots meta tag on the homepage.
Why this matters
The title and description are the text someone reads in a search result before deciding whether to click. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Character encoding declared
Looks good · Metadata · Measured on your page
Observed evidence
UTF-8 declared in a meta tag.
Why this matters
The title and description are the text someone reads in a search result before deciding whether to click. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: HTML5 doctype
Looks good · Metadata · Measured on your page
Observed evidence
HTML5 doctype declared.
Why this matters
The title and description are the text someone reads in a search result before deciding whether to click. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: No meta keywords tag
Looks good · Metadata · Measured on your page
Observed evidence
No obsolete meta keywords tag.
Why this matters
The title and description are the text someone reads in a search result before deciding whether to click. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Valid metadata order in <head>
Looks good · Metadata · Measured on your page
Observed evidence
No invalid element interrupts metadata in <head>.
Why this matters
The title and description are the text someone reads in a search result before deciding whether to click. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Indexing16Looks good
100/100Looks good: Single canonical declaration
Looks good · Indexing · Measured on your page
Observed evidence
One canonical declaration found.
Why this matters
These rules decide whether the page can be indexed at all. One wrong directive hides good work. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Noindex and canonical agree
Looks good · Indexing · Measured on your page
Observed evidence
No conflicting noindex and cross-page canonical instructions.
Why this matters
These rules decide whether the page can be indexed at all. One wrong directive hides good work. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: No meta-refresh redirect
Looks good · Indexing · Measured on your page
Observed evidence
No meta-refresh redirect.
Why this matters
These rules decide whether the page can be indexed at all. One wrong directive hides good work. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: No soft-404 response
Looks good · Indexing · Measured on your page
Observed evidence
No soft-404 pattern on sampled HTTP 200 pages.
Why this matters
These rules decide whether the page can be indexed at all. One wrong directive hides good work. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Canonical target integrity
Looks good · Indexing · Measured on your page
Observed evidence
Canonical is a valid https URL. Its host is checked by the canonical consistency check.
Why this matters
These rules decide whether the page can be indexed at all. One wrong directive hides good work. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Sampled URLs have aligned indexability signals
Looks good · Indexing · Measured on your page
Observed evidence
Indexability signals align across 10 sampled URL(s).
Why this matters
These rules decide whether the page can be indexed at all. One wrong directive hides good work. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Show 10 more checks
Looks good: robots.txt exists
Looks good · Indexing · Measured on your page
Observed evidence
robots.txt responds with 200.
Why this matters
These rules decide whether the page can be indexed at all. One wrong directive hides good work. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: robots.txt doesn't block everything
Looks good · Indexing · Measured on your page
Observed evidence
The audited URL is allowed for Googlebot. Most specific matching path; allow wins equal-length conflicts.
Why this matters
These rules decide whether the page can be indexed at all. One wrong directive hides good work. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Sitemap exists
Looks good · Indexing · Measured on your page
Observed evidence
Sitemap found at https://sendoff.dev/sitemap.xml.
Why this matters
These rules decide whether the page can be indexed at all. One wrong directive hides good work. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Sitemap parses and lists URLs
Looks good · Indexing · Measured on your page
Observed evidence
Sitemap lists 24 same-origin URLs.
Why this matters
These rules decide whether the page can be indexed at all. One wrong directive hides good work. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Sitemap declared in robots.txt
Looks good · Indexing · Measured on your page
Observed evidence
robots.txt declares the sitemap.
Why this matters
These rules decide whether the page can be indexed at all. One wrong directive hides good work. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Canonical URL set
Looks good · Indexing · Measured on your page
Observed evidence
Canonical set: https://sendoff.dev/
Why this matters
These rules decide whether the page can be indexed at all. One wrong directive hides good work. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Canonical is absolute and self-referencing
Looks good · Indexing · Measured on your page
Observed evidence
Canonical is absolute and points at this page.
Why this matters
These rules decide whether the page can be indexed at all. One wrong directive hides good work. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: www vs apex consistency
Looks good · Indexing · Measured on your page
Observed evidence
Hostname is used consistently (sendoff.dev).
Why this matters
These rules decide whether the page can be indexed at all. One wrong directive hides good work. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: URLs are readable slugs
Looks good · Indexing · Measured on your page
Observed evidence
URL slugs are readable (21 sampled).
Why this matters
These rules decide whether the page can be indexed at all. One wrong directive hides good work. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Sampled pages expose search-access signals
Looks good · Indexing · Measured on your page
Observed evidence
No restrictive search-access signal on 10 sampled page(s). Actual indexing is not verified.
Why this matters
These rules decide whether the page can be indexed at all. One wrong directive hides good work. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Content10Looks good1Informational
100/100Not measured: ReadabilityFlesch reading ease ≈ 62.
Not measured · Content · Not established
Observed evidence
Flesch reading ease ≈ 62.
Why this matters
This observation could not be established from the available evidence. Resolve the collection limit or inspect the relevant source before deciding whether a change is needed.
Recommended fix
60+ reads easily for most visitors. This is a heuristic, not a rule — technical audiences tolerate denser text.
Looks good: Crawlable content in source HTML
Looks good · Content · Measured on your page
Observed evidence
No recognized empty JavaScript application shell on 10 sampled page(s). The entered page exposes 1103 publisher word(s).
Why this matters
This is the substance of the page. Placeholders and repeated copy make it read as unfinished. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Homepage content volume
Looks good · Content · Measured on your page
Observed evidence
The audited page has about 1103 words of main content.
Why this matters
This is the substance of the page. Placeholders and repeated copy make it read as unfinished. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Text-to-HTML ratio
Looks good · Content · Measured on your page
Observed evidence
Text-to-HTML ratio is 8.1%.
Why this matters
This is the substance of the page. Placeholders and repeated copy make it read as unfinished. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: No placeholder text
Looks good · Content · Measured on your page
Observed evidence
No placeholder text detected on crawled pages.
Why this matters
This is the substance of the page. Placeholders and repeated copy make it read as unfinished. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: No starter-template leftovers
Looks good · Content · Measured on your page
Observed evidence
No starter-template artifacts detected.
Why this matters
This is the substance of the page. Placeholders and repeated copy make it read as unfinished. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Show 5 more checks
Looks good: Title and H1 agree
Looks good · Content · Measured on your page
Observed evidence
Title and H1 share topic words: say, send, sendoff, handle.
Why this matters
This is the substance of the page. Placeholders and repeated copy make it read as unfinished. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Crawled pages aren't near-duplicates
Looks good · Content · Measured on your page
Observed evidence
No near-duplicate main content among 9 indexable sampled pages.
Why this matters
This is the substance of the page. Placeholders and repeated copy make it read as unfinished. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Outbound references
Looks good · Content · Measured on your page
Observed evidence
5 outbound link(s) present.
Why this matters
This is the substance of the page. Placeholders and repeated copy make it read as unfinished. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Discovery copy is distinct across sampled pages
Looks good · Content · Measured on your page
Observed evidence
No repeated description, H1, or publisher copy across 10 sampled pages.
Why this matters
This is the substance of the page. Placeholders and repeated copy make it read as unfinished. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Structured data4Looks good1Informational
100/100Looks good: JSON-LD present
Looks good · Structured data · Measured on your page
Observed evidence
1 JSON-LD block(s) found on the homepage.
Why this matters
Structured data tells machines who published the page and what it describes. Broken markup is ignored outright. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: JSON-LD parses
Looks good · Structured data · Measured on your page
Observed evidence
All 10 JSON-LD block(s) parse cleanly.
Why this matters
Structured data tells machines who published the page and what it describes. Broken markup is ignored outright. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Organization or WebSite schema
Looks good · Structured data · Measured on your page
Observed evidence
Identity schema present: Organization, WebSite.
Why this matters
Structured data tells machines who published the page and what it describes. Broken markup is ignored outright. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Content-specific schema
Looks good · Structured data · Measured on your page
Observed evidence
Content schema found: TechArticle, Offer, SoftwareApplication.
Why this matters
Structured data tells machines who published the page and what it describes. Broken markup is ignored outright. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Headings7Looks good
100/100Looks good: H1 exists
Looks good · Headings · Measured on your page
Observed evidence
H1 found: "Say “send it.” Sendoff handles the rest."
Why this matters
Headings are the outline every parser and screen reader follows to find the answer. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Single H1
Looks good · Headings · Measured on your page
Observed evidence
Exactly one H1 on the homepage.
Why this matters
Headings are the outline every parser and screen reader follows to find the answer. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Heading levels don't skip
Looks good · Headings · Measured on your page
Observed evidence
Heading hierarchy is sequential across 11 headings.
Why this matters
Headings are the outline every parser and screen reader follows to find the answer. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: H1 has real text
Looks good · Headings · Measured on your page
Observed evidence
H1 reads "Say “send it.” Sendoff handles the rest.".
Why this matters
Headings are the outline every parser and screen reader follows to find the answer. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Headings are descriptive
Looks good · Headings · Measured on your page
Observed evidence
11 headings, averaging 5.3 words — descriptive.
Why this matters
Headings are the outline every parser and screen reader follows to find the answer. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Content is sectioned with H2s
Looks good · Headings · Measured on your page
Observed evidence
7 H2 section(s) structure the page.
Why this matters
Headings are the outline every parser and screen reader follows to find the answer. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Element IDs are unique per document
Looks good · Headings · Measured on your page
Observed evidence
All inspected element IDs are unique within their documents.
Why this matters
Headings are the outline every parser and screen reader follows to find the answer. The inspected source provides this signal.
Recommended fix
Nothing to do here.
ImagesNot applicable
Not measuredNot applicable: Alt text coverageNo visible <img> elements on the audited page (hidden, presentational and 1×1 tracking images are not counted).
Not applicable · Images · Measured on your page
Observed evidence
No visible <img> elements on the audited page (hidden, presentational and 1×1 tracking images are not counted).
Why this matters
Alt text is what a screen reader announces, and what image search and AI systems read in place of the picture. This check does not apply to the features observed in this sample.
Recommended fix
Nothing to change here. Any image you add later needs alt text that describes it, so this check starts scoring then.
Not applicable: Width/height attributesNo visible <img> elements to measure on the audited page.
Not applicable · Images · Measured on your page
Observed evidence
No visible <img> elements to measure on the audited page.
Why this matters
Alt text is what a screen reader announces, and what image search and AI systems read in place of the picture. This check does not apply to the features observed in this sample.
Recommended fix
Nothing to change here. Give future images explicit width and height attributes so the browser can reserve their space.
Not applicable: Modern image formatsNo raster images with a recognizable file extension were found.
Not applicable · Images · Measured on your page
Observed evidence
No raster images with a recognizable file extension were found.
Why this matters
Alt text is what a screen reader announces, and what image search and AI systems read in place of the picture. This check does not apply to the features observed in this sample.
Recommended fix
Nothing to change here. If images arrive later, serve WebP or AVIF alongside PNG/JPEG.
Not applicable: Lazy loadingOnly 0 visible image(s) on the page, too few for lazy loading to change the initial load.
Not applicable · Images · Measured on your page
Observed evidence
Only 0 visible image(s) on the page, too few for lazy loading to change the initial load.
Why this matters
Alt text is what a screen reader announces, and what image search and AI systems read in place of the picture. This check does not apply to the features observed in this sample.
Recommended fix
Nothing to change here. Once the page carries several images, add loading="lazy" to the ones below the fold.
Links6Looks good
100/100Looks good: Internal links resolve
Looks good · Links · Measured on your page
Observed evidence
All 6 sampled internal links return < 400.
Why this matters
Links are how visitors and crawlers reach the rest of the site. A broken one is a dead end. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Anchor text is meaningful
Looks good · Links · Measured on your page
Observed evidence
16 of 16 links have descriptive text or labels.
Why this matters
Links are how visitors and crawlers reach the rest of the site. A broken one is a dead end. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: No dead placeholder links
Looks good · Links · Measured on your page
Observed evidence
No placeholder links on the audited page.
Why this matters
Links are how visitors and crawlers reach the rest of the site. A broken one is a dead end. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: External links use rel=noopener
Looks good · Links · Measured on your page
Observed evidence
All target="_blank" links carry rel="noopener".
Why this matters
Links are how visitors and crawlers reach the rest of the site. A broken one is a dead end. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Homepage links into the site
Looks good · Links · Measured on your page
Observed evidence
Homepage links to 5 distinct internal pages.
Why this matters
Links are how visitors and crawlers reach the rest of the site. A broken one is a dead end. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Same-page links have source targets
Looks good · Links · Measured on your page
Observed evidence
67 same-page fragment link(s) have source targets.
Why this matters
Links are how visitors and crawlers reach the rest of the site. A broken one is a dead end. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Mobile4Looks good2Informational
100/100Not applicable: Responsive image markupOnly 0 image(s) on the page, too few for responsive image markup to change what phones download.
Not applicable · Mobile · Measured on your page
Observed evidence
Only 0 image(s) on the page, too few for responsive image markup to change what phones download.
Why this matters
Google indexes the phone rendering, so that is the version being graded. This check does not apply to the features observed in this sample.
Recommended fix
Nothing to change here. When the page carries several images, give them srcset and sizes so phones fetch smaller files.
Not measured: No tiny inline font sizesNo sub-12px inline font sizes detected; stylesheet rules and rendered sizes were not measured.
Not measured · Mobile · Not established
Observed evidence
No sub-12px inline font sizes detected; stylesheet rules and rendered sizes were not measured.
Why this matters
This observation could not be established from the available evidence. Resolve the collection limit or inspect the relevant source before deciding whether a change is needed.
Recommended fix
Check computed font sizes in a browser across mobile widths.
Looks good: Viewport meta tag
Looks good · Mobile · Measured on your page
Observed evidence
Viewport configured: "width=device-width, initial-scale=1".
Why this matters
Google indexes the phone rendering, so that is the version being graded. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Pinch zoom not disabled
Looks good · Mobile · Measured on your page
Observed evidence
The viewport lets users zoom.
Why this matters
Google indexes the phone rendering, so that is the version being graded. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Interactive controls have source labels
Looks good · Mobile · Measured on your page
Observed evidence
411 source controls have detectable names. Browser accessibility and CSS visibility were not tested.
Why this matters
Google indexes the phone rendering, so that is the version being graded. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: ARIA references point to source elements
Looks good · Mobile · Measured on your page
Observed evidence
103 ARIA reference(s) resolve within their source documents. Rendered visibility was not tested.
Why this matters
Google indexes the phone rendering, so that is the version being graded. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Language2Looks good1Informational
100/100Not applicable: hreflang syntaxNo hreflang tags — fine for single-language sites.
Not applicable · Language · Measured on your page
Observed evidence
No hreflang tags — fine for single-language sites.
Why this matters
The declared language tells browsers and assistive tech how to read the page and who it is for. This check does not apply to the features observed in this sample.
Recommended fix
Only add hreflang if you publish the same content in multiple languages/regions.
Looks good: html lang attribute
Looks good · Language · Measured on your page
Observed evidence
Language declared: lang="en".
Why this matters
The declared language tells browsers and assistive tech how to read the page and who it is for. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Declared language matches content
Looks good · Language · Measured on your page
Observed evidence
Declared language (en) matches detected content language.
Why this matters
The declared language tells browsers and assistive tech how to read the page and who it is for. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Branding1Looks good3Informational
100/100Not measured: Apple touch iconNo apple-touch-icon link.
Not measured · Branding · Not established
Observed evidence
No apple-touch-icon link.
Why this matters
This observation could not be established from the available evidence. Resolve the collection limit or inspect the relevant source before deciding whether a change is needed.
Recommended fix
Add a 180×180 apple-touch-icon so iOS home-screen bookmarks show your logo instead of a screenshot.
Not measured: Web app manifestNo web manifest linked.
Not measured · Branding · Not established
Observed evidence
No web manifest linked.
Why this matters
This observation could not be established from the available evidence. Resolve the collection limit or inspect the relevant source before deciding whether a change is needed.
Recommended fix
Optional, but a manifest.json enables install prompts and better mobile integration.
Not measured: Theme colorNo theme-color meta tag.
Not measured · Branding · Not established
Observed evidence
No theme-color meta tag.
Why this matters
This observation could not be established from the available evidence. Resolve the collection limit or inspect the relevant source before deciding whether a change is needed.
Recommended fix
Add <meta name="theme-color"> to tint the mobile browser UI to your brand color. Small touch, feels polished.
Looks good: Favicon
Looks good · Branding · Measured on your page
Observed evidence
Favicon declared via <link rel="icon"> (/icon.svg).
Why this matters
These icons are what appear in browser tabs, bookmarks and search results. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Performance
Measured from the audited response and its markup. These are source observations, not field Core Web Vitals.
| Measure | This site | Reading |
|---|---|---|
| Web fonts don't block text | — | Informational: not applicableNo Google Fonts stylesheet links detected. |
| Server response time | 126 ms | Looks good: goodThe audit received response headers after 126 ms from one test location. |
| HTML payload size | 104 KB | Looks good: goodThe page's HTML is 104 KB uncompressed: acceptable, though under 100 KB is a good target for content pages. |
| No render-blocking head scripts | — | Looks good: goodNo synchronous render-blocking scripts in <head>. |
| Inline styles are bounded | 4.2 KB | Looks good: goodInline styles total 4.2 KB. |
| Script/stylesheet count | — | Looks good: good7 total script/style resources — reasonable. |
| HTML served compressed | — | Looks good: goodHTML is compressed with br. |
| Iframe usage | — | Looks good: goodNo iframes. |
| Source HTML weight | 103.8 KB | Informational: measured source, not transferred bytes103.8 KB of HTML on the audited page |
From a single automated fetch of the audited page. A quick reading, not a substitute for Lighthouse or field data.
Security
HTTPS, transport security and the response headers the audited pages send.
Needs a fix: HTTP redirects to HTTPSThe http:// version serves content instead of redirecting.
Needs a fix · Security · Review suggestedCritical
Observed evidence
The http:// version serves content instead of redirecting.
Why this matters
HTTPS protects what visitors send you, and response headers limit what a hostile page can do in their browser. Right now the sampled pages don't provide it.
Recommended fix
301-redirect all HTTP traffic to HTTPS — otherwise you have duplicate origins and users can land on the insecure one.
Could be better: HSTS headerNo active Strict-Transport-Security max-age was observed.
Could be better · Security · Review suggested
Observed evidence
No active Strict-Transport-Security max-age was observed.
Why this matters
HTTPS protects what visitors send you, and response headers limit what a hostile page can do in their browser. It is there, but weaker than this check expects.
Recommended fix
Add HSTS (e.g. max-age=63072000; includeSubDomains) so browsers never even try HTTP after the first visit.
Could be better: Frame embedding protectionNo frame-embedding restriction was observed (neither CSP frame-ancestors nor X-Frame-Options).
Could be better · Security · Review suggested
Observed evidence
No frame-embedding restriction was observed (neither CSP frame-ancestors nor X-Frame-Options).
Why this matters
HTTPS protects what visitors send you, and response headers limit what a hostile page can do in their browser. It is there, but weaker than this check expects.
Recommended fix
Send Content-Security-Policy: frame-ancestors 'self' (or 'none', or a list of partner origins), or X-Frame-Options: SAMEORIGIN. It stops other sites from framing your pages to trick visitors into clicking (clickjacking).
Could be better: X-Content-Type-OptionsX-Content-Type-Options: nosniff is not set.
Could be better · Security · Review suggested
Observed evidence
X-Content-Type-Options: nosniff is not set.
Why this matters
HTTPS protects what visitors send you, and response headers limit what a hostile page can do in their browser. It is there, but weaker than this check expects.
Recommended fix
Add it — one header, stops MIME-sniffing attacks. Most hosts let you set headers in config (vercel.json, netlify.toml, next.config).
Could be better: Content Security PolicyNo Content-Security-Policy detected.
Could be better · Security · Review suggested
Observed evidence
No Content-Security-Policy detected.
Why this matters
HTTPS protects what visitors send you, and response headers limit what a hostile page can do in their browser. It is there, but weaker than this check expects.
Recommended fix
Configure an enforced policy for script and resource origins; use report-only monitoring to prepare changes safely.
Could be better: Browser feature permissionsNo explicit restriction on sensitive browser features was observed.
Could be better · Security · Review suggested
Observed evidence
No explicit restriction on sensitive browser features was observed.
Why this matters
HTTPS protects what visitors send you, and response headers limit what a hostile page can do in their browser. It is there, but weaker than this check expects.
Recommended fix
Disable unused camera, microphone, or geolocation access using Permissions-Policy.
Could be better: Server technology disclosureThe X-Powered-By header advertises "Blume".
Could be better · Security · Review suggested
Observed evidence
The X-Powered-By header advertises "Blume".
Why this matters
HTTPS protects what visitors send you, and response headers limit what a hostile page can do in their browser. It is there, but weaker than this check expects.
Recommended fix
You can remove it (in Next.js: poweredByHeader: false; in Express: app.disable('x-powered-by')). It adds bytes to every response and tells scanners what to probe; it is not a vulnerability by itself.
Not applicable: Declared form submission targetsNo HTML forms were found.
Not applicable · Security · Measured on your page
Observed evidence
No HTML forms were found.
Why this matters
HTTPS protects what visitors send you, and response headers limit what a hostile page can do in their browser. This check does not apply to the features observed in this sample.
Recommended fix
Check JavaScript-generated form transport separately if present.
Not applicable: Password forms avoid URL submissionNo enabled, named password inputs in sampled HTML.
Not applicable · Security · Measured on your page
Observed evidence
No enabled, named password inputs in sampled HTML.
Why this matters
HTTPS protects what visitors send you, and response headers limit what a hostile page can do in their browser. This check does not apply to the features observed in this sample.
Recommended fix
Review authentication forms separately when applicable.
Looks good: Site serves over HTTPS
Looks good · Security · Measured on your page
Observed evidence
Site serves over HTTPS.
Why this matters
HTTPS protects what visitors send you, and response headers limit what a hostile page can do in their browser. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Referrer policy
Looks good · Security · Measured on your page
Observed evidence
No Referrer-Policy is set, so browsers apply their default, strict-origin-when-cross-origin, which sends only the origin to other sites.
Why this matters
HTTPS protects what visitors send you, and response headers limit what a hostile page can do in their browser. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: No mixed content
Looks good · Security · Measured on your page
Observed evidence
No insecure subresources detected.
Why this matters
HTTPS protects what visitors send you, and response headers limit what a hostile page can do in their browser. The inspected source provides this signal.
Recommended fix
Nothing to do here.
AI answer readiness
Retrieval signals an answer engine relies on: crawler access, clear entities and answers it can quote. These checks do not measure citations or traffic.
Could be better: FAQ/QA schemaNo FAQPage or QAPage schema on any crawled page.
Could be better · AI answer readiness · Review suggested
Observed evidence
No FAQPage or QAPage schema on any crawled page.
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. It is there, but weaker than this check expects.
Recommended fix
If the page answers recurring questions, use visible question-and-answer content and matching FAQPage markup. QAPage is for a single question with user-submitted answers. Google FAQ rich results are restricted to eligible authoritative government and health sites; markup does not guarantee AI citations.
Could be better: Question-style headingsOnly 13% of 30 H2/H3 headings are question-shaped.
Could be better · AI answer readiness · Review suggested
Observed evidence
Only 13% of 30 H2/H3 headings are question-shaped.
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. It is there, but weaker than this check expects.
Recommended fix
Phrase key subheadings as the questions users actually ask ("How much does X cost?"). This improves the measured question-heading signal; the audit does not guarantee citations.
Could be better: Definitional openingThe opening paragraph doesn't define what the site/topic is: "Newsletters and announcements for your list, sent from your own Cloudflare and A…"
Could be better · AI answer readiness · Review suggested
Observed evidence
The opening paragraph doesn't define what the site/topic is: "Newsletters and announcements for your list, sent from your own Cloudflare and A…"
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. It is there, but weaker than this check expects.
Recommended fix
"X is a Y that does Z for W" in the first paragraph gives answer engines a liftable definition of you. Write it once, benefit everywhere.
Could be better: Question headings have concise answers1/4 question-shaped heading(s) have a 20–500 character paragraph immediately after them.
Could be better · AI answer readiness · Measured on your page
Observed evidence
1/4 question-shaped heading(s) have a 20–500 character paragraph immediately after them.
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. It is there, but weaker than this check expects.
Recommended fix
Put a direct 20–500 character answer paragraph immediately after each question heading so retrieval systems can quote it cleanly.
Affected pages (2)
- https://sendoff.dev/docs
- https://sendoff.dev/docs/guides/sending
Could be better: Machine-readable provenance signalsOnly 3 of 4 provenance signal types were found: contact, date, breadcrumb.
Could be better · AI answer readiness · Measured on your page
Observed evidence
Only 3 of 4 provenance signal types were found: contact, date, breadcrumb.
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. It is there, but weaker than this check expects.
Recommended fix
Add the missing author, date, breadcrumb, or contact signal so machines can identify provenance and site structure.
Affected pages (9)
- https://sendoff.dev/
- https://sendoff.dev/docs
- https://sendoff.dev/docs/quickstart
- https://sendoff.dev/docs/connect
- https://sendoff.dev/docs/guides/sending
- https://sendoff.dev/changelog/app-1-0-0
- https://sendoff.dev/changelog/app-1-0-1
- https://sendoff.dev/changelog/create-sendoff-1-0-0
- https://sendoff.dev/changelog/create-sendoff-1-0-1
Not measured: Citable facts density98 concrete figures across 1143 words.
Not measured · AI answer readiness · Not established
Observed evidence
98 concrete figures across 1143 words.
Why this matters
This observation could not be established from the available evidence. Resolve the collection limit or inspect the relevant source before deciding whether a change is needed.
Recommended fix
Good — keep facts specific and current, and date-stamp them.
Not applicable: Accept: text/markdown negotiationThe homepage answered Accept: text/markdown with text/html.
Not applicable · AI answer readiness · Measured on your page
Observed evidence
The homepage answered Accept: text/markdown with text/html.
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. This check does not apply to the features observed in this sample.
Recommended fix
Optional: return a stripped markdown body when the request asks for text/markdown. Some hosts and CDNs do this for you; a plain HTML answer is not a defect.
Not applicable: Advertised machine interfaces are inspectableNo OpenAPI interface was advertised by sampled HTML.
Not applicable · AI answer readiness · Measured on your page
Observed evidence
No OpenAPI interface was advertised by sampled HTML.
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. This check does not apply to the features observed in this sample.
Recommended fix
An API is optional. Add a service-desc link if you already publish a machine-readable API specification.
Looks good: llms.txt
Looks good · AI answer readiness · Measured on your page
Observed evidence
llms.txt exists (6756 chars of markdown).
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: llms-full.txt
Looks good · AI answer readiness · Measured on your page
Observed evidence
llms-full.txt is published.
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: AI crawler access
Looks good · AI answer readiness · Measured on your page
Observed evidence
The audited URL is allowed for evaluated answer-search crawlers.
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Semantic HTML structure
Looks good · AI answer readiness · Measured on your page
Observed evidence
Semantic structure present: main×1, article×2, section×9, nav×3, header×3, footer×1, aside×1.
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Answers lead the section
Looks good · AI answer readiness · Measured on your page
Observed evidence
Paragraphs get to the point without preamble.
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Content is chunkable
Looks good · AI answer readiness · Measured on your page
Observed evidence
Paragraphs average 15 words, lists present, tables present — chunk-friendly.
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Freshness signals
Looks good · AI answer readiness · Measured on your page
Observed evidence
dateModified present in schema.
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Cites external sources
Looks good · AI answer readiness · Measured on your page
Observed evidence
62 outbound reference(s) across crawled pages.
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Consistent brand entity
Looks good · AI answer readiness · Measured on your page
Observed evidence
Brand declared: og:site_name "Sendoff" + identity schema.
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Description reads as a liftable summary
Looks good · AI answer readiness · Measured on your page
Observed evidence
Meta description works as a standalone summary.
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: llms.txt links resolve to this site
Looks good · AI answer readiness · Measured on your page
Observed evidence
llms.txt contains 32 same-origin Markdown link(s).
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Entity identity agrees across signals
Looks good · AI answer readiness · Measured on your page
Observed evidence
The site is consistently named "Sendoff" and 6 identity URL(s) stay on sendoff.dev.
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: llms.txt follows the spec
Looks good · AI answer readiness · Published platform rule
Observed evidence
llms.txt has an H1, a summary, 5 section(s) and 32 link(s).
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Markdown copies of pages
Looks good · AI answer readiness · Measured on your page
Observed evidence
2 of 3 probed URLs returned markdown.
Why this matters
This is what an AI assistant relies on when deciding whether it can quote your page. The inspected source provides this signal.
Recommended fix
Nothing to do here.
AdSense readinessOptional
Publisher-policy signals, for sites that plan to carry ads. These checks do not affect the overall score or grade, and they do not measure or guarantee AdSense approval.
On its own, this site scores 30/100 for publisher readiness. Ignore this section if you do not run ads.
Needs a fix: Privacy policy pageNo privacy policy page is linked or crawlable.
Needs a fix · AdSense policy · Review suggestedCritical
Observed evidence
No privacy policy page is linked or crawlable.
Why this matters
A publisher review looks for this before it accepts a site. Right now the sampled pages don't provide it.
Recommended fix
Publish an accessible privacy policy that discloses cookies and data use by Google and other third-party ad vendors.
Could be better: Sampled publisher-content coverage3/10 editorial pages expose fewer than 250 publisher words; those 10 pages hold 4941 publisher words in total.
Could be better · AdSense policy · Review suggestedCritical
Observed evidence
3/10 editorial pages expose fewer than 250 publisher words; those 10 pages hold 4941 publisher words in total.
Why this matters
A publisher review looks for this before it accepts a site. It is there, but weaker than this check expects.
Recommended fix
Review whether each page fully serves its purpose. Expand incomplete editorial content with useful information; keep concise navigation and tool pages when they help visitors.
Affected pages (3)
- https://sendoff.dev/changelog
- https://sendoff.dev/changelog/create-sendoff-1-0-0
- https://sendoff.dev/changelog/create-sendoff-1-0-1
Could be better: Terms pageNo terms of use page found.
Could be better · AdSense policy · Review suggested
Observed evidence
No terms of use page found.
Why this matters
A publisher review looks for this before it accepts a site. It is there, but weaker than this check expects.
Recommended fix
Consider adding terms that identify the service rules and publisher. This is a transparency heuristic, not an AdSense requirement.
Could be better: About pageNo about page found.
Could be better · AdSense policy · Review suggested
Observed evidence
No about page found.
Why this matters
A publisher review looks for this before it accepts a site. It is there, but weaker than this check expects.
Recommended fix
Add an About page that identifies the publisher, site purpose, and relevant experience. This supports content transparency but is not a standalone AdSense requirement.
Could be better: Contact methodNo contact page or mailto link found.
Could be better · AdSense policy · Review suggested
Observed evidence
No contact page or mailto link found.
Why this matters
A publisher review looks for this before it accepts a site. It is there, but weaker than this check expects.
Recommended fix
Add a working contact route or visible email so users can reach the publisher. This is a trust heuristic, not a published approval rule.
Could be better: Tool pages expose explanatory content2/10 tool-style screen(s) expose fewer than 80 publisher words.
Could be better · AdSense policy · Review suggested
Observed evidence
2/10 tool-style screen(s) expose fewer than 80 publisher words. Google publishes no minimum word count; this is an audit heuristic.
Why this matters
A publisher review looks for this before it accepts a site. It is there, but weaker than this check expects.
Recommended fix
Explain the tool's purpose, inputs, method, limitations, and result interpretation in source HTML. Add useful material, not filler.
Affected pages (2)
- https://sendoff.dev/changelog
- https://sendoff.dev/changelog/create-sendoff-1-0-0
Could be better: Policy pages linked site-wide10/10 crawled pages don't link to the privacy policy.
Could be better · AdSense policy · Review suggested
Observed evidence
10/10 crawled pages don't link to the privacy policy.
Why this matters
A publisher review looks for this before it accepts a site. It is there, but weaker than this check expects.
Recommended fix
Place the privacy link in shared navigation or footer markup so users can reach disclosures from any sampled entry page.
Affected pages (10)
- https://sendoff.dev/
- https://sendoff.dev/docs
- https://sendoff.dev/changelog
- https://sendoff.dev/docs/quickstart
- https://sendoff.dev/docs/connect
- https://sendoff.dev/docs/guides/sending
- https://sendoff.dev/changelog/app-1-0-0
- https://sendoff.dev/changelog/app-1-0-1
- https://sendoff.dev/changelog/create-sendoff-1-0-0
- https://sendoff.dev/changelog/create-sendoff-1-0-1
Could be better: Latest article names an author and a dateThe newest article shows a date but no author.
Could be better · AdSense policy · Measured on your page
Observed evidence
The newest article shows a date but no author.
Why this matters
A publisher review looks for this before it accepts a site. It is there, but weaker than this check expects.
Recommended fix
Add the missing one in the visible page and in Article JSON-LD, so the byline and the markup agree.
Affected pages (1)
- https://sendoff.dev/docs/guides/deliverability
Could be better: First-party contact emailContact email does not align with sendoff.dev: hello@example.com.
Could be better · AdSense policy · Review suggested
Observed evidence
Contact email does not align with sendoff.dev: hello@example.com.
Why this matters
A publisher review looks for this before it accepts a site. It is there, but weaker than this check expects.
Recommended fix
Use an address on the publisher's domain when practical so readers can verify the publisher identity. This is a practitioner trust heuristic, not an AdSense requirement.
Not measured: Privacy policy advertising disclosuresA privacy page was not present in the crawl sample, so its disclosures could not be verified.
Not measured · AdSense policy · Not established
Observed evidence
A privacy page was not present in the crawl sample, so its disclosures could not be verified.
Why this matters
This observation could not be established from the available evidence. Resolve the collection limit or inspect the relevant source before deciding whether a change is needed.
Recommended fix
Confirm the policy explains cookies or similar storage, Google or advertising vendors, and third-party data use.
Not measured: ads.txtNo ads.txt yet.
Not measured · AdSense policy · Not established
Observed evidence
No ads.txt yet.
Why this matters
This observation could not be established from the available evidence. Resolve the collection limit or inspect the relevant source before deciding whether a change is needed.
Recommended fix
When AdSense provides your publisher entry, publish it exactly at /ads.txt and monitor authorization status in your account.
Not measured: Domain age & historyDomain age isn't visible from the site itself.
Not measured · AdSense policy · Not established
Observed evidence
Domain age isn't visible from the site itself.
Why this matters
This observation could not be established from the available evidence. Resolve the collection limit or inspect the relevant source before deciding whether a change is needed.
Recommended fix
Do not use age as a content-quality proxy. Verify ownership and account eligibility in AdSense; Google's general eligibility page publishes no domain-age threshold.
Looks good: Thin page share
Looks good · AdSense policy · Review suggested
Observed evidence
8/10 editorial pages clear the audit's publisher-content triage threshold.
Why this matters
A publisher review looks for this before it accepts a site. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: No ads on non-content screens
Looks good · AdSense policy · Published platform rule
Observed evidence
No Google ad code detected on sampled non-content screens.
Why this matters
A publisher review looks for this before it accepts a site. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Publisher content differs across URLs
Looks good · AdSense policy · Review suggested
Observed evidence
No high publisher-content repetition among 7 substantial sampled page(s).
Why this matters
A publisher review looks for this before it accepts a site. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Publisher content exists in source HTML
Looks good · AdSense policy · Measured on your page
Observed evidence
No empty client-rendered publisher shell in the crawl sample.
Why this matters
A publisher review looks for this before it accepts a site. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Article-style content exists
Looks good · AdSense policy · Measured on your page
Observed evidence
Article-style content detected.
Why this matters
A publisher review looks for this before it accepts a site. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: No "coming soon" or placeholder pages
Looks good · AdSense policy · Measured on your page
Observed evidence
No "coming soon", "under construction" or lorem-ipsum text on crawled pages.
Why this matters
A publisher review looks for this before it accepts a site. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Show 4 more checks
Looks good: Site language is AdSense-supported
Looks good · AdSense policy · Measured on your page
Observed evidence
Language "en" is AdSense-supported.
Why this matters
A publisher review looks for this before it accepts a site. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Existing ad scripts
Looks good · AdSense policy · Measured on your page
Observed evidence
No competing ad scripts on the page.
Why this matters
A publisher review looks for this before it accepts a site. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Latest article has real depth
Looks good · AdSense policy · Measured on your page
Observed evidence
The newest article carries 880 words of body text.
Why this matters
A publisher review looks for this before it accepts a site. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Looks good: Latest article reads as edited work
Looks good · AdSense policy · Review suggested
Observed evidence
Style pattern score 0/100 on the newest article. These are style patterns in the sampled text, not a determination of how the page was written.
Why this matters
A publisher review looks for this before it accepts a site. The inspected source provides this signal.
Recommended fix
Nothing to do here.
Hosting and infrastructure
Public endpoint facts observed at audit time. A CDN or proxy can conceal the origin infrastructure.
| Hostname | sendoff.dev |
|---|---|
| CDN / edge | Cloudflare |
| IP addresses | 172.67.207.142, 104.21.22.228, 2606:4700:3034::ac43:cf8e, 2606:4700:3031::6815:16e4 |
| DNS A | 104.21.22.228 · 172.67.207.142 |
| DNS AAAA | 2606:4700:3034::ac43:cf8e · 2606:4700:3031::6815:16e4 |
| DNS NS | zara.ns.cloudflare.com · vick.ns.cloudflare.com |
| TLS | TLSv1.3TLS_AES_256_GCM_SHA384 |
| Certificate issuer | Google Trust Services / WE1 |
| Certificate valid until | Jan 29 21:42:33 2027 GMT |
| Certificate validation | Passed |
Website anatomy and diagnostics
Explore links, resources, crawler access and site integrations.
Page architecture
Choose a page to explore its details and connections.
Page content
1103 publisher words
Page structure
html content
Observed discovery
Depth 0 · 9 incoming links
HTTP 200 · 103.8 KB source
Source interactions
38 controls · 0 unnamed
6 script / 1 stylesheet references
- Canonical declaration
- https://sendoff.dev/
- Schema types
- WebSite, Organization, WebPage, SoftwareApplication, Offer
- Outgoing links in sampled graph
- /docs · /changelog · /docs/quickstart · /docs/connect · /docs/guides/sending
Routes: / · /docs · /changelog
Resource origins 2
Resources associated with your website. External resources may belong to the same organization.
- https://sendoff.dev/script, stylesheet · 84 references · same origin
- https://static.cloudflareinsights.com/script · 10 references · cross origin
Crawler policy by page
Review crawler access for your pages. Search, training and user-triggered services have different purposes; declared access does not guarantee discovery.
| Crawler / purpose | Page | Policy | Matched directive |
|---|---|---|---|
| Googlebotsearch | / | allowed | allow: / |
| Googlebotsearch | /docs | allowed | allow: / |
| Googlebotsearch | /changelog | allowed | allow: / |
| Googlebotsearch | /docs/quickstart | allowed | allow: / |
| Googlebotsearch | /docs/connect | allowed | allow: / |
| Googlebotsearch | /docs/guides/sending | allowed | allow: / |
| Googlebotsearch | /changelog/app-1-0-0 | allowed | allow: / |
| Googlebotsearch | /changelog/app-1-0-1 | allowed | allow: / |
| Googlebotsearch | /changelog/create-sendoff-1-0-0 | allowed | allow: / |
| Googlebotsearch | /changelog/create-sendoff-1-0-1 | allowed | allow: / |
| bingbotsearch | / | allowed | allow: / |
| bingbotsearch | /docs | allowed | allow: / |
| bingbotsearch | /changelog | allowed | allow: / |
| bingbotsearch | /docs/quickstart | allowed | allow: / |
| bingbotsearch | /docs/connect | allowed | allow: / |
| bingbotsearch | /docs/guides/sending | allowed | allow: / |
| bingbotsearch | /changelog/app-1-0-0 | allowed | allow: / |
| bingbotsearch | /changelog/app-1-0-1 | allowed | allow: / |
| bingbotsearch | /changelog/create-sendoff-1-0-0 | allowed | allow: / |
| bingbotsearch | /changelog/create-sendoff-1-0-1 | allowed | allow: / |
| OAI-SearchBotsearch | / | allowed | allow: / |
| OAI-SearchBotsearch | /docs | allowed | allow: / |
| OAI-SearchBotsearch | /changelog | allowed | allow: / |
| OAI-SearchBotsearch | /docs/quickstart | allowed | allow: / |
| OAI-SearchBotsearch | /docs/connect | allowed | allow: / |
| OAI-SearchBotsearch | /docs/guides/sending | allowed | allow: / |
| OAI-SearchBotsearch | /changelog/app-1-0-0 | allowed | allow: / |
| OAI-SearchBotsearch | /changelog/app-1-0-1 | allowed | allow: / |
| OAI-SearchBotsearch | /changelog/create-sendoff-1-0-0 | allowed | allow: / |
| OAI-SearchBotsearch | /changelog/create-sendoff-1-0-1 | allowed | allow: / |
| PerplexityBotsearch | / | allowed | allow: / |
| PerplexityBotsearch | /docs | allowed | allow: / |
| PerplexityBotsearch | /changelog | allowed | allow: / |
| PerplexityBotsearch | /docs/quickstart | allowed | allow: / |
| PerplexityBotsearch | /docs/connect | allowed | allow: / |
| PerplexityBotsearch | /docs/guides/sending | allowed | allow: / |
| PerplexityBotsearch | /changelog/app-1-0-0 | allowed | allow: / |
| PerplexityBotsearch | /changelog/app-1-0-1 | allowed | allow: / |
| PerplexityBotsearch | /changelog/create-sendoff-1-0-0 | allowed | allow: / |
| PerplexityBotsearch | /changelog/create-sendoff-1-0-1 | allowed | allow: / |
| Claude-SearchBotsearch | / | allowed | allow: / |
| Claude-SearchBotsearch | /docs | allowed | allow: / |
| Claude-SearchBotsearch | /changelog | allowed | allow: / |
| Claude-SearchBotsearch | /docs/quickstart | allowed | allow: / |
| Claude-SearchBotsearch | /docs/connect | allowed | allow: / |
| Claude-SearchBotsearch | /docs/guides/sending | allowed | allow: / |
| Claude-SearchBotsearch | /changelog/app-1-0-0 | allowed | allow: / |
| Claude-SearchBotsearch | /changelog/app-1-0-1 | allowed | allow: / |
| Claude-SearchBotsearch | /changelog/create-sendoff-1-0-0 | allowed | allow: / |
| Claude-SearchBotsearch | /changelog/create-sendoff-1-0-1 | allowed | allow: / |
| GPTBottraining | / | allowed | allow: / |
| GPTBottraining | /docs | allowed | allow: / |
| GPTBottraining | /changelog | allowed | allow: / |
| GPTBottraining | /docs/quickstart | allowed | allow: / |
| GPTBottraining | /docs/connect | allowed | allow: / |
| GPTBottraining | /docs/guides/sending | allowed | allow: / |
| GPTBottraining | /changelog/app-1-0-0 | allowed | allow: / |
| GPTBottraining | /changelog/app-1-0-1 | allowed | allow: / |
| GPTBottraining | /changelog/create-sendoff-1-0-0 | allowed | allow: / |
| GPTBottraining | /changelog/create-sendoff-1-0-1 | allowed | allow: / |
| ClaudeBottraining | / | allowed | allow: / |
| ClaudeBottraining | /docs | allowed | allow: / |
| ClaudeBottraining | /changelog | allowed | allow: / |
| ClaudeBottraining | /docs/quickstart | allowed | allow: / |
| ClaudeBottraining | /docs/connect | allowed | allow: / |
| ClaudeBottraining | /docs/guides/sending | allowed | allow: / |
| ClaudeBottraining | /changelog/app-1-0-0 | allowed | allow: / |
| ClaudeBottraining | /changelog/app-1-0-1 | allowed | allow: / |
| ClaudeBottraining | /changelog/create-sendoff-1-0-0 | allowed | allow: / |
| ClaudeBottraining | /changelog/create-sendoff-1-0-1 | allowed | allow: / |
| Google-Extendedtraining and other Google AI uses | / | allowed | allow: / |
| Google-Extendedtraining and other Google AI uses | /docs | allowed | allow: / |
| Google-Extendedtraining and other Google AI uses | /changelog | allowed | allow: / |
| Google-Extendedtraining and other Google AI uses | /docs/quickstart | allowed | allow: / |
| Google-Extendedtraining and other Google AI uses | /docs/connect | allowed | allow: / |
| Google-Extendedtraining and other Google AI uses | /docs/guides/sending | allowed | allow: / |
| Google-Extendedtraining and other Google AI uses | /changelog/app-1-0-0 | allowed | allow: / |
| Google-Extendedtraining and other Google AI uses | /changelog/app-1-0-1 | allowed | allow: / |
| Google-Extendedtraining and other Google AI uses | /changelog/create-sendoff-1-0-0 | allowed | allow: / |
| Google-Extendedtraining and other Google AI uses | /changelog/create-sendoff-1-0-1 | allowed | allow: / |
| ChatGPT-Useruser-initiated; robots may not apply | / | allowed | allow: / |
| ChatGPT-Useruser-initiated; robots may not apply | /docs | allowed | allow: / |
| ChatGPT-Useruser-initiated; robots may not apply | /changelog | allowed | allow: / |
| ChatGPT-Useruser-initiated; robots may not apply | /docs/quickstart | allowed | allow: / |
| ChatGPT-Useruser-initiated; robots may not apply | /docs/connect | allowed | allow: / |
| ChatGPT-Useruser-initiated; robots may not apply | /docs/guides/sending | allowed | allow: / |
| ChatGPT-Useruser-initiated; robots may not apply | /changelog/app-1-0-0 | allowed | allow: / |
| ChatGPT-Useruser-initiated; robots may not apply | /changelog/app-1-0-1 | allowed | allow: / |
| ChatGPT-Useruser-initiated; robots may not apply | /changelog/create-sendoff-1-0-0 | allowed | allow: / |
| ChatGPT-Useruser-initiated; robots may not apply | /changelog/create-sendoff-1-0-1 | allowed | allow: / |
Advertised APIs and machine interfaces
documentation · declared
https://sendoff.dev/docs
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://sendoff.dev/docs/quickstart
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://sendoff.dev/docs/connect
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://sendoff.dev/docs/guides/sending
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://sendoff.dev/docs/guides/writing
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://sendoff.dev/docs/guides/stats
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://sendoff.dev/docs/guides/subscribers
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://sendoff.dev/docs/guides/importing
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://sendoff.dev/docs/guides/past-issues
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://sendoff.dev/docs/guides/deliverability
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://sendoff.dev/docs/guides/updating
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://sendoff.dev/docs/reference/mcp-tools
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://sendoff.dev/docs/reference/rest-api
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://sendoff.dev/docs/reference/settings
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://sendoff.dev/docs/reference/setup
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://sendoff.dev/docs/help/troubleshooting
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://sendoff.dev/docs/help/faq
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://github.com/haydenbleasel/sendoff/edit/main/apps/web/docs/index.mdx
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://sendoff.dev/docs/quickstart.md
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://github.com/haydenbleasel/sendoff/edit/main/apps/web/docs/quickstart.mdx
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://sendoff.dev/docs/connect.md
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://github.com/haydenbleasel/sendoff/edit/main/apps/web/docs/connect.mdx
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://sendoff.dev/docs/guides/sending.md
This interface was advertised; its runtime behavior remains unverified.
documentation · declared
https://github.com/haydenbleasel/sendoff/edit/main/apps/web/docs/guides/sending.mdx
This interface was advertised; its runtime behavior remains unverified.
Public DNS and TLS endpoint
sendoff.dev · observed · 172.67.207.142, 104.21.22.228, 2606:4700:3034::ac43:cf8e, 2606:4700:3031::6815:16e4
- A
- 104.21.22.228 · 172.67.207.142
- AAAA
- 2606:4700:3034::ac43:cf8e · 2606:4700:3031::6815:16e4
- CNAME
- Unavailable for this exact hostname
- NS
- zara.ns.cloudflare.com · vick.ns.cloudflare.com
- MX
- Unavailable for this exact hostname
- CAA
- Unavailable for this exact hostname
TLS: TLSv1.3
Certificate validation passed for the observed endpoint.
Issuer: Google Trust Services / WE1
Certificate valid until: Jan 29 21:42:33 2027 GMT
PageSpeed measurement
Loading the PageSpeed panel…
Growth resources
Loading growth resources…
Where to take this site next
Follow-on work suggested by the observations above.
- 01
Build content depth around real keywords
Technical basics are in place — use pages that answer actual searches as the next content focus. This audit does not measure rankings.
- 02
Steal from our keyword datasets
Curated keyword collections by niche give you a content calendar without paid tools.
- 03
Make policy pages, publisher disclosures and substantial content reachable before applying. This audit cannot predict approval.
Apply the recommended fixes
Hand the complete evidence to a coding agent, or take the report with you.
Report notes
- 01This report covers the sampled public pages listed above. Other pages may have different results.
- 02Browser-rendered content, private backend systems and authenticated experiences may require a separate review.
- 03Unavailable observations are identified in the report. Results do not guarantee rankings, citations, security, accessibility or advertising approval.
Pages included in this report
- https://sendoff.dev/
- https://sendoff.dev/docs
- https://sendoff.dev/changelog
- https://sendoff.dev/docs/quickstart
- https://sendoff.dev/docs/connect
- https://sendoff.dev/docs/guides/sending
- https://sendoff.dev/changelog/app-1-0-0
- https://sendoff.dev/changelog/app-1-0-1
- https://sendoff.dev/changelog/create-sendoff-1-0-0
- https://sendoff.dev/changelog/create-sendoff-1-0-1