SEO Fixes Without a Deploy
Set canonicals, robots directives and meta tags by URL pattern, publish redirects and hreflang -- all at the edge, in front of your site. Check each change before it serves, undo any change after.
Controls
CanonicalMeta robotsX-Robots-TagMeta & Open GraphhreflangRedirectsThe fixes that usually wait for a release
Wrenda already sits in front of your site. Edge SEO lets it correct the head, move URLs and link language versions on the way through.
Feature 01 · Served to crawlers
Element Rules -- Canonical, Robots & Meta
Narrow a rule to a path pattern and say what the head should contain. Wrenda removes the origin's conflicting tags and writes yours, so a crawler never sees two canonicals. When several rules match a URL, the highest priority wins outright -- nothing is merged, so one rule always explains a page.
- Canonical with {origin}{path} to drop query strings
- Meta robots and the X-Robots-Tag header, set separately
- Meta description, Open Graph and Twitter card tags
- Remove a bad origin tag and write a new one in one rule
- Robots values validated on save -- typos are refused
Element rule
{
url_pattern: '/shoes/**',
priority: 100,
directives: {
canonical: '{origin}{path}',
robots: 'index, follow',
meta: { 'og:type': 'product' }
}
}Before vs after the rule
Your origin's head
<head>
<title>Trail Shoes | Acme</title>
<link rel="canonical"
href="http://yoursite.com/shoes/trail?sort=price">
<meta name="robots" content="noindex">
</head>What crawlers get
<head>
<meta property="og:type" content="product">
<meta name="robots" content="index, follow">
<link rel="canonical"
href="https://yoursite.com/shoes/trail">
<title>Trail Shoes | Acme</title>
</head>Feature 02 · Served to everyone
Edge Redirects -- With Loop Detection
Move old URLs with path-glob rules. Wildcards carry through to the target, so one rule can redirect a whole section. Redirects apply to people as well as crawlers -- a redirect only search engines see is cloaking -- so the guard rails are heavier here than anywhere else in Wrenda.
- Created switched off -- turning a redirect on is a separate, deliberate step
- Loops refused -- every activation re-checks the whole live set for a cycle
- Hop limit -- a chain of 10 hops or more is refused like a loop
- Safe targets -- a site path or an http(s) URL -- never protocol-relative or javascript:
Refused at publish
This would create a redirect loop: /blog/wrenda-probe → /articles/wrenda-probe → /blog/wrenda-probe
Path globs, wildcards carried through
| Source | Target | Code |
|---|---|---|
/blog/** | /articles/{1} | 301 |
/old-pricing | /pricing | 308 |
/sale/* | /offers | 302 |
/docs/** | https://docs.yoursite.com/{1} | 307 |
Response
HTTP/2 301 location: /articles/hello-world x-crawler-action: redirect cache-control: public, max-age=3600
Feature 03 · Served to crawlers
hreflang Clusters -- Reciprocal by Construction
Google ignores an hreflang alternate that does not point back. So instead of per-page tags, you list each language version of a page once, and every page in the group gets the full set -- each one pointing at all the others and at itself. Wrenda strips the origin's own hreflang links first, so the two sets never contradict.
- At least two language entries, one URL per language
- One optional x-default
- Real ISO language and region codes -- en-UK is refused, en-GB passes
- Every URL on a domain you have added, so the back-links exist
- A page can belong to only one live cluster
Every member page emits the whole set
<link rel="alternate" hreflang="en-GB" href="https://yoursite.com/uk/trail"> <link rel="alternate" hreflang="de-DE" href="https://yoursite.com/de/trail"> <link rel="alternate" hreflang="x-default" href="https://yoursite.com/trail">
Will not publish a broken group
A cluster can be saved as a draft in any state. It only goes live when it passes every check above, and the checks run again whenever it is switched back on.
Write, switch on, preview, undo
Canonical and robots can de-index a site, so every step is built to let you check what will happen.
Step 01
Write and check the rule
Pick a path pattern and the elements to set, a redirect source and target, or a set of language URLs. See an element rule’s head before and after, or dry-run a cluster’s checks, before saving. Element rules and redirects are saved switched off.
Step 02
Switch it on
Turning a rule on is a separate step. Redirects are loop-checked and hreflang clusters are checked for reciprocity at that moment. Nothing serves while the domain is in shadow or paused mode.
Step 03
Preview a live URL
Wrenda fetches the real page as a crawler would, runs your redirects, element rules and hreflang in the same order production does, and shows the result as a search snippet -- before and after, with truncation and noindex warnings.
Step 04
Undo anything
Every change to every rule is kept in a history. Undo one edit, or bring back a deleted rule. Restoring a rule to serving re-runs its checks, because a set that was safe last week may not be now.
Where Edge SEO earns its keep
The jobs that are small to describe and slow to ship, because they live in templates and server config.
Site Migrations
A restructure leaves hundreds of old URLs behind. Map whole sections with one glob rule each, keep query strings if you need them, and check where any path ends up.
- 301, 302, 307 and 308
- {1}..{9} carry wildcards to the target
- "Check a path" shows the live hop chain
International Sites
hreflang is easy to get wrong in templates and hard to see once it is. Clusters make every language version point at every other, and refuse to go live when they cannot.
- Reciprocity enforced at publish
- Invalid codes such as en-UK refused
- Origin hreflang links replaced, not duplicated
Index Hygiene
Faceted URLs canonicalised to the clean path, a stray noindex lifted, thin pages kept out of the index -- by pattern, without waiting for a template change.
- Self-canonicals that drop query strings
- noindex or X-Robots-Tag by path pattern
- Missing Open Graph tags filled in
Headers that name the rule
Every response Wrenda changes says which rule changed it and what it touched.
# Googlebot requests a faceted product page GET /shoes/trail?sort=price HTTP/2 200 content-type: text/html x-wrenda-seo-rule: <rule id> x-wrenda-seo-applied: canonical,robots,og:type # A person requests the same URL: your origin's page, untouched GET /shoes/trail?sort=price HTTP/2 200 x-served-by: wrenda-fast x-crawler-action: fast-pass # Anyone requests a migrated URL: redirected for everyone GET /blog/hello-world HTTP/2 301 location: /articles/hello-world x-crawler-action: redirect x-wrenda-redirect-rule: <rule id>
0
Site deploys to ship a rule
4
Redirect codes: 301 · 302 · 307 · 308
1
Rule owns each URL -- no merging
Where this fits
Which crawlers count as crawlers: bot handling docs · Using it on a JavaScript site: pre-rendering
Edge SEO FAQs
Who sees what, how to stay safe, and how to undo a change.
Element rules (canonical, robots, meta and Open Graph tags) and hreflang clusters are applied to crawler responses only. People browsing your site get your origin's page exactly as it is. Redirects are the exception: they apply to everyone, crawlers and humans alike, because a redirect shown only to search engines is cloaking by Google's own definition.
Several things. Every new element rule and redirect is saved switched off. Robots values are checked against the list of real directives when you save, so a typo is rejected rather than served. The rule editor shows the before and after head for a rule as written, saved or not. The live-URL preview shows what crawlers would get from everything switched on, even while a domain is still in shadow mode, and warns when the result would be noindex, including via the X-Robots-Tag header, which you cannot see in the HTML. And one rule owns each URL: the highest-priority match wins outright and nothing is merged, so "which rule made this page noindex?" always has exactly one answer.
Switch the rule off, or use the change history. Every create, edit and delete of an element rule, redirect or hreflang cluster is recorded, and any single change can be undone, including bringing back a rule you deleted. The undo is recorded too, so an accidental undo can itself be undone. Element rules are applied to the page on the way out rather than baked into cached renders, so switching one off needs no re-render. One caveat: 301 and 308 redirects are sent with a one-hour cache lifetime, so browsers that already followed one may keep doing so for up to an hour. Use 302 while you are still deciding.
Not with Edge SEO rules. They set the canonical link, the robots meta tag, the X-Robots-Tag header and meta tags such as description, og:title and twitter:card. Title rewrites are available in SEO split testing (early access), where they apply to a test's variant pages rather than as a permanent rule. The live preview does show how your current title will be cut off in a search result.
Yes. Element rules and hreflang are applied to pre-rendered pages and to crawler pass-through pages, last in the chain, after any SEO split test, so a content experiment can never change which URL is canonical or whether a page is indexable. AI-optimized responses are served as Markdown, which has no HTML head, so only a rule's X-Robots-Tag header applies there.
Rules only serve once a domain is in active serving mode. In shadow or paused mode nothing is rewritten or redirected. Edge SEO is available on every plan, including the 14-day trial, under Template Optimizations → Edge SEO in the dashboard. Creating and changing rules needs an editor or admin role.
Get Started
Ship the fix, not the ticket
Canonicals, robots, redirects and hreflang, previewed on a live URL and reversible -- with no release to wait for.
Start 14-day trial14-day free trial — No credit card required
Included on every plan. See pricing