free-fix-sequence-strategy.md
1 --- 2 title: 'Free-Fix-First Multi-Touch Outreach Sequence' 3 category: 'pipeline' 4 last_verified: '2026-04-02' 5 related_files: 6 - 'prompts/FOLLOWUP.md' 7 - 'docs/05-outreach/legal-basis.md' 8 - 'docs/03-pipeline/outreach-strategy.md' 9 - 'docs/decisions.md#DR-128' 10 tags: ['outreach', 'sequence', 'free-fix', 'multi-touch', 'email', 'sms', 'compliance'] 11 status: 'current' 12 --- 13 14 # Free-Fix-First Multi-Touch Outreach Sequence 15 16 **Decision reference:** DR-128 (2026-04-02) 17 18 --- 19 20 ## The Problem With Current Outreach 21 22 The pipeline has sent ~44,900 initial outreach messages. Conversions are effectively zero. 23 24 The root cause is structural, not copywriting. The sequence leads with a request for money from a stranger who has received one message. The buyer has no evidence we know what we are doing, no trust in the brand, and no reason to act now instead of ignoring the email. 25 26 Industry data is clear: 80% of sales happen between touches 5 and 12. Single-touch cold outreach to local service businesses (who are busy, skeptical of digital services, and not actively looking for website help) will not convert at meaningful rates regardless of how well the copy is written. 27 28 The fix is structural. Lead with value. Deliver it visibly. Build the case over multiple touches before asking for money. 29 30 --- 31 32 ## The Strategy: Free Fix First 33 34 The sequence inverts the normal order. We do something useful for the prospect's website before asking them for anything. We tell them what we did. We use their response (or absence of one) to calibrate the next message. Price comes at touch 4, after we have demonstrated competence three times. 35 36 ### What "Free Fix" Means 37 38 A free fix is a real, verifiable change to their website that improves their SEO or conversion potential. It must: 39 40 - Be executable programmatically or manually before the first message is sent 41 - Be verifiable by the prospect within 30 seconds (they can check in a browser or Google Search Console) 42 - Carry zero risk of breaking anything on their site 43 - Be clearly connected to a business outcome (calls, leads, Google ranking) 44 45 ### Free Fix Priority List (in order of preference) 46 47 **1. Missing or truncated meta description** 48 49 Target: pages where `<meta name="description">` is absent or over 160 characters (truncated in SERPs). 50 51 Why it works: visible in Google within 24-72 hours after re-crawl. The prospect can search their own business name and see the improvement. It is directly linked to click-through rate from Google, which local businesses understand instinctively. 52 53 Execution: write and submit a replacement meta description via the Google Search Console Inspection API (if we have access), or deliver it as a ready-to-paste snippet with instructions. For the purposes of touch 1 copy, we frame it as "we've written a new Google snippet for your listing" — which is accurate and tangible. 54 55 Realistic scope: any site missing a meta description or showing a truncated one in SERP. Our scoring already captures this in the `weaknesses` array. Priority score factor: `context` (site context and SERP representation). 56 57 **2. Broken or redirect-chained internal links** 58 59 Target: sites with 3xx redirect chains on internal links (e.g. linking to http:// when the site is https://). 60 61 Why it works: Google penalises redirect hops on internal links. It is entirely safe to flag without touching their CMS. Deliverable is a list of the specific broken links with the corrected URLs as a copy-paste fix. 62 63 **3. Missing alt text on hero/above-fold images** 64 65 Target: `<img>` tags with no `alt` attribute on the first two images in the `<body>`. 66 67 Why it works: accessibility, Google Image Search rankings, page scoring. We can include the exact HTML change needed. Safe, verifiable, and zero risk. 68 69 **4. Missing canonical tag** 70 71 Target: pages without `<link rel="canonical">` where the URL has query parameters or www/non-www duplication risk. 72 73 Why it works: prevents Google from indexing duplicate content. Directly connected to ranking. Deliverable is a one-line HTML snippet. 74 75 ### What "Delivering" the Fix Means in Touch 1 76 77 We do not claim to have modified their website (we have no CMS access). We frame it correctly: 78 79 "I've prepared a replacement for your Google listing snippet — it took about 10 minutes. I can send it over now. It should update in Google within a few days after your site re-crawls." 80 81 Or, where we have confidence the meta description is missing: 82 83 "Your site is showing no description in Google — visitors see a random sentence cut off mid-word. I've written a replacement. It is literally a one-line paste into your site header. Happy to send it over, no strings attached." 84 85 The fix is real. The copy reflects what we are actually offering. This is not a bait-and-switch. 86 87 --- 88 89 ## 8-Touch Sequence: Full Specification 90 91 ### Channel Rules (per market) 92 93 | Market | Email | SMS | 94 |--------|-------|-----| 95 | AU | Yes | Yes (business hours, Spam Act inferred consent) | 96 | NZ | Yes | Yes (UEMA inferred consent) | 97 | US | Yes | No (TCPA permanently blocked, DR-121) | 98 | CA | Yes | No (CASL; permanently blocked, DR-121) | 99 | UK | Blocked (LIA required) | No (permanently blocked) | 100 | IE | Yes (PECR corporate) | No (permanently blocked) | 101 | ZA | Yes | No (permanently blocked) | 102 | IN | Yes | No (permanently blocked) | 103 104 AU/NZ: use both email and SMS for touches 1, 3, 4, 6. SMS only for touches 2 and 5 (nudges). Email only for touches 7 and 8 (longer content). 105 106 ### Touch-Level Specification 107 108 --- 109 110 #### Touch 1 — Day 0: The Free Fix 111 112 **Goal:** Earn attention by doing something useful before asking for anything. 113 114 **Channel:** Email (primary) + SMS (AU/NZ only) 115 116 **Email anatomy:** 117 118 Subject line options (use spintax; pick one per send): 119 - `quick fix for [domain]` 120 - `noticed something on [businessname].com.au` 121 - `[businessname] — Google snippet fix (2 min)` 122 - `your Google listing looks off` 123 124 Opening (signal-based, not generic): 125 Reference the specific issue found: missing meta description, broken link, missing alt text. State it plainly and factually. Do not say "I noticed you have some issues" — say what the specific issue is. 126 127 Body: 128 - One sentence on what the issue is and why it matters (calls from Google, click-through rate, ranking) 129 - One sentence that the fix takes 2-10 minutes and we have already written it 130 - One sentence: "I'll send it over at no charge — just reply and I'll paste it across" 131 132 CTA: reply-based ("just reply here"), not a link. Keeps it in email thread, improves deliverability, and creates a natural conversation starter. 133 134 Closing: name only, no title, no company link in the first email (reduces spam score on first touch). 135 136 Length target: 60-80 words for email body. 137 138 **SMS (AU/NZ, under 160 chars):** 139 ``` 140 Hi [firstname], spotted a quick win on [domain] — your Google snippet is missing. I've written a replacement. Want me to send it? Reply YES or STOP. - Marcus 141 ``` 142 143 **Do not mention:** price, paid audit, company website, "I help businesses like yours", "I was browsing your site" (sounds creepy for trades). 144 145 **Tone by market:** 146 - AU: direct, practical, no fluff. "G'day" is fine but not mandatory. 147 - US: same directness, no slang. 148 - UK: slightly more formal but still concise. 149 150 --- 151 152 #### Touch 2 — Day 3: Confirm + Second Issue 153 154 **Goal:** Show the fix is ready and introduce a second issue from a different angle. 155 156 **Channel:** Email + SMS nudge (AU/NZ) 157 158 **Context:** Whether or not they replied to touch 1, this lands 3 days later referencing the first message and adding a new data point. If they replied positively, the autoresponder handles them — this is only for non-responders. 159 160 **Email:** 161 162 Subject line options: 163 - `still have that fix ready for [domain]` 164 - `one more thing I found on [businessname].com` 165 - `two things on [domain]` 166 167 Opening: reference touch 1 briefly without repeating it. "Still have that Google snippet ready for [domain]. I also ran a quick check on your mobile experience while I was there." 168 169 Body: 170 - Confirm the original fix is still available 171 - Introduce a second, different issue (mobile load time, missing trust signals, no call button visible above the fold — pick from the site's scored weaknesses) 172 - Keep it observational, not salesy: "Your site takes 6.2 seconds to load on a mobile. Most visitors leave after 3. Worth knowing." 173 174 CTA: same as touch 1 — reply-based. "Happy to send both findings over. Just reply here." 175 176 Length target: 70-90 words. 177 178 **SMS nudge (AU/NZ):** 179 ``` 180 Hi [firstname], still have that Google fix for [domain] if you want it. Also found something on your mobile speed. Reply YES or STOP. - Marcus 181 ``` 182 183 --- 184 185 #### Touch 3 — Day 7: Cost of Inaction 186 187 **Goal:** Make the cost of doing nothing concrete and specific to their situation. 188 189 **Channel:** Email (primary). No SMS on this touch — let the email breathe. 190 191 **Framing:** This is not "here is how much our service costs." This is "here is what your site's current state is costing you in missed calls." The numbers come from our scoring data and publicly available industry benchmarks, framed as estimates, not guarantees. 192 193 **Email:** 194 195 Subject line options: 196 - `what [domain] is losing each month` 197 - `rough numbers on [businessname]'s site` 198 - `the gap between your site and your competitors` 199 - `honest question about [businessname].com.au` 200 201 Opening: reference the type of business and their location. "A [plumber/dentist/pest control company] in [suburb] with a site scoring in the bottom 40% typically sees about 30-40% lower enquiry rates compared to the average in their area. Yours is in that range." 202 203 Body: 204 - Frame the score (if available) or the issues found as a conversion gap: "If your site currently converts 2% of visitors, fixing the issues I've identified could realistically get that to 3.5-4%. For a business getting 500 website visitors a month, that is 7-10 extra enquiries." 205 - Make the math feel real but frame all numbers as estimates: "even if it is half that improvement, it is still worth more per month than a full audit costs." 206 - Do not mention the price of the audit yet — say "more per month than addressing this would cost" to plant the seed without triggering price resistance. 207 208 CTA: "Want me to send you the specific numbers for your site? I have them ready." 209 210 Length target: 90-120 words. 211 212 No SMS on touch 3. 213 214 --- 215 216 #### Touch 4 — Day 14: Soft Price Introduction 217 218 **Goal:** First mention of paid services. Frame as a natural next step after 3 touches of free value. 219 220 **Channel:** Email (primary) + SMS (AU/NZ) 221 222 **This is where price enters.** It must be framed as context, not a pitch. The transition: 223 224 "I have been sending you findings piece by piece. The full picture — every issue ranked by impact, with specific recommendations for each — is what our audit covers. For a [plumber/dentist/etc] in [city], it typically takes 24 hours and the report runs about [AU$337 / US$297 / £159]." 225 226 Include the `/o/{site_id}` prefill link here (the BRAND_URL proposal link with their details pre-loaded). 227 228 **Email:** 229 230 Subject line options: 231 - `the full picture for [domain]` 232 - `[businessname] — what a full audit covers` 233 - `everything I've found on [domain]` 234 235 Opening: reference the journey — "I have sent a few things I noticed on your site over the past couple of weeks." 236 237 Body: 238 - Acknowledge you have been sharing free findings; frame the paid audit as the comprehensive version 239 - One sentence on what is included: every factor scored (headline, CTA, trust signals, mobile experience, page speed, imagery, offer clarity) 240 - Price stated plainly, once, without apology 241 - Prefill link: "If you want to see what it looks like for your specific site, I have set up a summary at BRAND_URL/o/[shortcode]" 242 - Soft CTA: "No pressure — just thought you should have the full picture after everything I have sent across." 243 244 Length target: 100-130 words. 245 246 **SMS (AU/NZ):** 247 ``` 248 Hi [firstname], sent a few findings on [domain] over the past weeks. Full audit is [AU$337] — 24hr turnaround, covers everything. Details: BRAND_URL/o/[code]. Reply STOP to opt out. 249 ``` 250 251 --- 252 253 #### Touch 5 — Day 21: Case Study + Competitor Gap 254 255 **Goal:** Social proof and competitive framing. Make inaction feel riskier. 256 257 **Channel:** Email only. 258 259 **Email:** 260 261 Subject line options: 262 - `what [competitor_domain] does differently` 263 - `how a [plumber] in [city] went from F to B` 264 - `[businessname] vs. the competition` 265 266 If `competitor_benchmark` is available in the site data, use it directly: "We scored [competitor_domain] at 83/100 — a [B grade]. Yours sits at [score]/100. That gap typically means they are converting roughly twice as many visitors into calls." 267 268 If no competitor benchmark, use aggregate data: "We have scored 43,000+ local business websites. The average for [plumbers/dentists/etc] in [country] is [industry_avg]/100. Yours is [score]/100." 269 270 Body: 271 - One-paragraph case study: a similar business (same industry, similar city size, same country) that improved their conversion after addressing similar issues. Use real data where available. If no real case study, use the industry aggregate framing. 272 - Return to the prefill link from touch 4. 273 274 CTA: "The offer from last week still stands. [BRAND_URL/o/shortcode]" 275 276 Length target: 100-140 words. 277 278 --- 279 280 #### Touch 6 — Day 28: Specific Angle (Ad Waste or Reviews Disconnect) 281 282 **Goal:** Change the frame entirely. Introduce an angle they have not heard yet. 283 284 **Channel:** Email + SMS (AU/NZ) 285 286 **Angle selection (automated per site):** 287 288 If `is_running_ads = true` (ad pixel detected): use the Ad Waste angle. 289 If `is_running_ads = false` and Google review count > 10: use the Reviews Disconnect angle. 290 Default: use the Competitor Gap angle from a fresh angle. 291 292 **Ad Waste angle:** 293 294 Subject: `what % of your Google Ads are working` 295 296 "If you are running Google Ads to a site scoring [grade], roughly 60-70% of that spend is being wasted — visitors arrive, see a site that does not look trustworthy or load quickly, and leave without calling. The ad spend keeps running regardless." 297 298 "A [plumber] in [city] running $800/month in ads is potentially wasting $500-560/month on a site that loses people before they call. The audit identifies exactly where they leave and why." 299 300 **Reviews Disconnect angle:** 301 302 Subject: `your reviews aren't working for you` 303 304 "You have [X] Google reviews averaging [Y] stars. None of them are on your website. That is your strongest sales tool — social proof from real customers — sitting on Google instead of converting visitors on your homepage." 305 306 "Getting Google reviews onto your site is one of the highest-ROI changes a local business can make. Our audit shows exactly where they should go and how to present them." 307 308 **SMS (AU/NZ — ad waste version):** 309 ``` 310 Hi [firstname], if you're running Google Ads, a low-scoring site wastes 60-70% of that spend. Worth 5 min? BRAND_URL/o/[code]. Reply STOP to opt out. 311 ``` 312 313 Length target: 80-110 words. 314 315 --- 316 317 #### Touch 7 — Day 35: Authority Anchor + Direct CTA 318 319 **Goal:** Establish scale and credibility; most direct ask of the sequence. 320 321 **Channel:** Email only. 322 323 Subject line options: 324 - `43,000+ sites scored — here is where yours ranks` 325 - `[businessname] rank among [industry] websites` 326 - `final look at [domain]` 327 328 Opening: Lead with the authority data point. "We have scored 43,484 local business websites across AU, US, UK, and NZ. Your site sits in the [bottom/middle] [X]% for [industry] businesses in [country]." 329 330 Body: 331 - One sentence on what the top 20% do differently (trust signals, fast mobile load, visible CTA above the fold) 332 - Return to the specific issues found in touches 1-2 (referenced by name, not re-explained) 333 - Direct CTA: "The audit is [price]. 24-hour turnaround. If you want to move your site from [grade] to [one grade higher], this is how." Include the prefill link. 334 335 Length target: 90-120 words. 336 337 No SMS on touch 7. 338 339 --- 340 341 #### Touch 8 — Day 42: Breakup 342 343 **Goal:** Professional close. Leave the door open. Do not burn the relationship. 344 345 **Channel:** Email only. 346 347 Subject line options: 348 - `closing the file on [domain]` 349 - `last one from me` 350 - `[firstname] — wrapping up` 351 352 Opening: "I have sent a few things about [domain] over the past six weeks. I am going to stop here." 353 354 Body: 355 - Acknowledge they may not be in a position to act right now, and that is fine 356 - Note that the issues will still be there whenever they are ready 357 - Point to the production site as the self-serve option ("you can request an audit any time") 358 - Do not apologise for the sequence; do not beg for a reply 359 360 Closing: "Best of luck with the business." Personal, warm, non-salesy. 361 362 Length target: 50-70 words. This is the shortest email in the sequence. 363 364 No SMS on touch 8. 365 366 --- 367 368 ## Opt-In Mechanics and Compliance 369 370 ### What Constitutes Engagement 371 372 Any non-STOP reply to touches 1-7 routes to the human reply funnel (existing autoresponder, `prompts/REPLIES.md`). This is treated as a warm lead and receives personalised follow-through, not a continuation of the automated sequence. 373 374 The sequence pauses immediately on any reply. The autoresponder handles from that point. 375 376 ### Legal Basis (do not re-litigate per send) 377 378 The full legal analysis lives at `docs/05-outreach/legal-basis.md`. Summary for this sequence: 379 380 - **AU/NZ:** Spam Act 2003 s.7(1)(b) inferred consent covers the full sequence. A business that publicly lists its email or phone on its website has implicitly invited contact about its business. Our messages concern their website. Inferred consent persists unless they opt out. The free fix offer does not create a new consent requirement — it is part of the same commercial communication. 381 382 - **US (email):** CAN-SPAM. No prior consent required. Physical address in footer, opt-out mechanism, non-deceptive subject lines. The sequence complies. US SMS remains permanently blocked (DR-121). 383 384 - **CA (email):** CASL s.6(2)(b) implied consent from publication. Treat conservatively — if the contact detail was conspicuously published in a business context (which it is — sourced from SERP/website), implied consent applies provided we identify ourselves and include opt-out. CA SMS permanently blocked (DR-121). 385 386 - **UK (email):** Currently blocked pending Legitimate Interest Assessment. Do not activate until LIA is documented and approved. 387 388 - **GDPR (IE, ZA, IN):** Legitimate Interest basis under Art. 6(1)(f) applies to B2B outreach with publicly available contact details. Identify sender, include opt-out, ensure relevance. Retain LIA documentation. 389 390 ### The Free Fix as a Legal Consideration 391 392 The free fix (delivering a meta description snippet, a list of broken links, etc.) is a service action delivered in the first email. It is not a separate commercial electronic message — it is the value component of touch 1. This framing is legally clean in all active markets. 393 394 Do not represent a fix as "done" if it was not actually executed. The copy must reflect what was actually prepared and offered, not a phantom completed action. 395 396 ### Opt-Out Processing 397 398 Same as existing pipeline: 399 - SMS: STOP keyword triggers immediate suppression 400 - Email: unsubscribe link in footer; honour within 10 business days (CAN-SPAM); honor immediately in practice 401 - Any opt-out suppresses across all channels for that business domain 402 403 --- 404 405 ## When to Introduce Price: Decision Framework 406 407 | Touch | Price Mentioned? | How | 408 |-------|-----------------|-----| 409 | 1 | No | Never | 410 | 2 | No | Never | 411 | 3 | Implicit only | "worth more per month than addressing this would cost" — no figure | 412 | 4 | Yes (first time) | Stated once, plainly. AU$337 / US$297 / £159. With prefill link. | 413 | 5 | Reference only | "The offer from last week still stands" — no re-statement of price | 414 | 6 | Reference only | Same | 415 | 7 | Yes (second time) | Direct: "The audit is [price]. 24-hour turnaround." | 416 | 8 | No | Self-serve link only | 417 418 The rationale: introduce price after demonstrating three rounds of free value (touches 1-3). At touch 4, the price lands in the context of "here is the full picture, which is what the paid service covers." By touch 7, the prospect has received 6 prior messages and has demonstrated passivity but not hostility — a direct ask is appropriate at that stage. 419 420 --- 421 422 ## Free Fix Execution: Pipeline Integration 423 424 The free fix must be selected and "prepared" (i.e. the fix deliverable generated) before touch 1 is sent. This is a pre-outreach step that should run as part of the proposal/enrichment phase, not at send time. 425 426 **Implementation steps (to be built):** 427 428 1. After enrichment, run a `free-fix-selector.js` module that: 429 - Reads the site's `weaknesses` array from the score JSON 430 - Checks for missing/truncated meta description (priority 1) 431 - Checks for mobile load time issues (priority 2) 432 - Checks for missing alt text on first two images (priority 3) 433 - Writes the prepared fix content to `free_fix_content` column on the site record 434 435 2. The fix content (e.g. the written meta description, the corrected internal links list) is stored and referenced in the touch 1 template via a `{{free_fix_summary}}` token. 436 437 3. If no fix can be identified for a site, fall back to the current outreach approach (score-led touch 1) — do not hold the site from outreach. 438 439 **Scope for initial implementation:** 440 441 Focus on meta description only for the first iteration. It is the highest coverage (most sites are missing or have truncated meta descriptions), lowest risk (purely additive), and most visually verifiable fix. 442 443 --- 444 445 ## Subject Line Quick Reference 446 447 | Touch | Email Subject Options | 448 |-------|-----------------------| 449 | 1 | `quick fix for [domain]` / `noticed something on [domain]` / `your Google listing looks off` | 450 | 2 | `still have that fix ready` / `one more thing I found on [domain]` | 451 | 3 | `what [domain] is losing each month` / `honest question about [businessname]` | 452 | 4 | `the full picture for [domain]` / `everything I've found on [domain]` | 453 | 5 | `what [competitor] does differently` / `[businessname] vs. the competition` | 454 | 6 | `what % of your Google Ads are working` / `your reviews aren't working for you` | 455 | 7 | `43,000+ sites scored — here is where yours ranks` / `final look at [domain]` | 456 | 8 | `closing the file on [domain]` / `last one from me` | 457 458 All subject lines: lowercase, 4-7 words, no punctuation marks, no emoji, no ALL CAPS. 459 460 --- 461 462 ## Expected Metrics (Targets to Validate) 463 464 These are informed estimates based on signal-based outreach benchmarks and the specific ICP (local service businesses, AU primary). They must be validated against real data over the first 2,000 sequences completed. 465 466 | Metric | Target | Basis | 467 |--------|--------|-------| 468 | Touch 1 reply rate | 6-10% | Free fix offer vs. generic cold email (2-3x lift expected) | 469 | Touch 1-3 cumulative positive reply rate | 10-15% | Value-first sequence benchmarks | 470 | Touch 4-8 conversion rate (positive reply → paid) | 20-30% | Warm lead conversion, existing autoresponder funnel | 471 | Overall sequence conversion (sent → paid) | 2-4% | Combined funnel (10-15% reply × 20-30% close) | 472 | Opt-out rate per touch | < 1% | Triggers a review of that touch's copy if exceeded | 473 | Sequence completion rate | > 80% | Reps/pipeline must complete sequences; partial sequences produce no data | 474 475 Target: overall sequence conversion of 2-4% would represent a 20-40x improvement over the current baseline. Even 1% would be a significant revenue inflection given the pipeline's outreach volume. 476 477 --- 478 479 ## A/B Test Plan 480 481 Run one variable change at a time. Initial priority: 482 483 1. **Free fix specificity:** "I've written a Google snippet for your site" (specific) vs. "I've found a quick win on your site" (vague). Test on 500 touch 1 sends each. Metric: reply rate. 484 485 2. **Price introduction timing:** Touch 4 (current) vs. Touch 5 (delayed). Test on 300 sequences reaching that step. Metric: positive reply rate post-price-introduction. 486 487 3. **SMS at touch 1:** AU/NZ email-only vs. email + SMS at touch 1. Test on 200 per arm. Metric: touch 1 reply rate (combined channel). 488 489 Do not test multiple variables simultaneously. Document results in a new `docs/03-pipeline/ab-test-results.md` file as data accumulates. 490 491 --- 492 493 ## Implementation Checklist 494 495 - [ ] Update `prompts/FOLLOWUP.md` to reflect the 8-touch angle map and free-fix framing 496 - [ ] Build `free-fix-selector.js` (meta description priority only, v1) 497 - [ ] Add `free_fix_content` column to sites table (migration) 498 - [ ] Update touch 1 templates in `data/templates/[country]/followup-email.json` with free-fix framing 499 - [ ] Update touch 4 templates to introduce price for the first time 500 - [ ] Update touch 6 templates with ad waste / reviews disconnect angle selection logic 501 - [ ] Update touch 8 templates to match the breakup spec above 502 - [ ] Add compliance check: do not send touch 1 if `free_fix_content IS NULL` AND site has no scored weaknesses (edge case: pristine sites that should not be in pipeline) 503 - [ ] A/B test infrastructure: add `ab_arm` column to outreaches table for test tracking 504 505 --- 506 507 **Last updated:** 2026-04-02 508 **Status:** Strategy accepted — implementation pending 509 **Next decision:** When to build `free-fix-selector.js` relative to other pipeline priorities