Noel Ceta Profile picture
Nov 8 โ€ข 16 tweets โ€ข 4 min read โ€ข Read on X
Client's SaaS traffic dropped 94% after a site migration disaster.

6 months later: Traffic up 450% from the pre-crash baseline.

Here's the complete turnaround playbook: ๐Ÿงต
1/ The disaster (Month 0):

SaaS company: B2B project management tool

Pre-migration performance:

- 28,000 organic sessions/month
- 340 keywords ranking top 10
- 1,200 trial signups/month
- MRR: $180K from organic

Post-migration crash:

- 1,680 organic sessions/month (-94%)
- 23 keywords ranking top 10
- 80 trial signups/month
- MRR: $12K from organic

Revenue loss: $168K/month
2/ Root cause analysis (Week 1-2):

Technical audit revealed:

โŒ 2,400+ pages returned 404 errors
โŒ No 301 redirects implemented
โŒ New URL structure broke all internal links
โŒ Canonical tags pointing to old domain
โŒ Schema markup completely removed
โŒ XML sitemap not updated
โŒ Robots.txt blocking critical pages
โŒ Page speed degraded 4.2s โ†’ 8.7s

Complete technical catastrophe.
3/ Emergency triage (Weeks 3-4):

Immediate fixes priority:

Week 3:

- Mapped all 2,400 old URLs to new URLs
- Implemented 301 redirects
- Fixed robots.txt (unblocked pages)
- Updated XML sitemap
- Resubmitted to Google Search Console
- Fixed canonical tags

Week 4:

- Restored schema markup (all pages)
- Fixed internal linking structure
- Optimized images (page speed)
- Implemented CDN
- Fixed mobile responsiveness issues

Page speed: 8.7s โ†’ 2.1s
4/ Results after triage (Month 1):

Early recovery:

- Traffic: 4,200 sessions/month (+150% from crash)
- Still down 85% from baseline
- 89 keywords back in top 10
- Trial signups: 180/month

Technical foundation restored. Now for growth.
5/ Content recovery strategy (Months 2-3):

Analyzed what was lost:

Top 50 ranking pages pre-migration:

- 23 pages completely deindexed
- 18 pages dropped from page 1 to 4-5
- 9 pages maintained rankings

Recovery actions:

- Updated all 41 affected pages (fresh content)
- Added 800-1,200 words to thin pages
- Improved on-page SEO (keywords, structure)
- Added internal links (3-5 per page)
- Changed publish dates (freshness signal)
6/ Link reclamation (Months 2-3):

Old domain had 340 referring domains.

Many links still pointing to old URLs.

Outreach campaign:

- Identified 180 high-DR backlinks to old domain
- Contacted site owners requesting URL updates
- 67 updated links to new domain (37% success rate)
- These 67 links = DR 55-85 range

Immediate authority boost.
7/ Content acceleration (Months 3-5):

Published aggressively:

Month 3: 12 new articles
Month 4: 16 new articles

Month 5: 20 new articles

Content focus:

- Bottom-funnel keywords (comparison, alternative, vs)
- Product-led content (use cases, how-tos)
- Programmatic pages (integrations, templates)

All optimized for conversions, not just traffic.
8/ The integration pages strategy:

Created 45 integration pages:

Format: "[SaaS] + [Popular Tool] Integration"

- Slack + [Tool]
- Asana + [Tool]
- Jira + [Tool]
- Google Drive + [Tool]

Each page:

- 1,200-1,500 words
- Step-by-step setup guide
- Screenshots
- Use cases
- FAQ section

Low competition, high intent keywords.

Result: 38 pages ranking top 5 within 60 days.
9/ The template library approach:

Built 30 free template pages:

Examples:

- "Project Charter Template"
- "Sprint Planning Template"
- "OKR Template"

Each template:

- Free download (email required)
- 1,000+ word guide on usage
- Editable in Google Sheets/Docs
- Linked to relevant product features

Lead generation + SEO rankings.

Result: 2,400 email signups in 3 months.
10/ Technical optimization round 2 (Month 4):

Advanced improvements:

- Implemented schema for all content types
- Added breadcrumb markup
- Created FAQ schema for 80+ pages
- Optimized Core Web Vitals (all green)
- Implemented lazy loading
- Added structured data for SoftwareApplication
- Fixed all crawl errors
- Improved mobile UX (tap targets, spacing)

Technical score: 42/100 โ†’ 94/100
11/ Link building acceleration (Months 3-6):

Strategic link acquisition:

Month 3-4: 18 editorial links

- Digital PR (published industry survey)
- Guest posts on DR 70+ sites
- Product reviews from industry blogs

Month 5-6: 34 editorial links

- Broken link building
- Resource page additions
- HARO responses (quoted in 8 articles)

Total new links: 52 (DR 55-82 average)
12/ Conversion rate optimization (Months 4-6):

Traffic means nothing without conversions.

CRO improvements:

- Redesigned trial signup flow (-2 steps)
- Added social proof (customer logos)
- Improved CTAs (clearer value props)
- Added live chat widget
- Created comparison pages
- Better pricing page (FAQ, testimonials)

Conversion rate: 2.8% โ†’ 4.9%
13/ Results timeline:

Month 1: 4,200 sessions (-85% from baseline)
Month 2: 11,400 sessions (-59% from baseline)
Month 3: 23,800 sessions (-15% from baseline)
Month 4: 47,200 sessions (+68% from baseline)
Month 5: 89,600 sessions (+220% from baseline)
Month 6: 154,000 sessions (+450% from baseline)

Trial signups: 7,546/month
MRR from organic: $890K

Went from disaster to 5ร— growth.
14/ What made the turnaround work:

โœ“ Immediate technical triage (stopped bleeding)
โœ“ Content recovery (rebuilt rankings)
โœ“ Link reclamation (transferred authority)
โœ“ Aggressive publishing (48 articles in 3 months)
โœ“ Strategic page types (integrations, templates)
โœ“ Link building (52 quality links)
โœ“ CRO focus (traffic โ†’ revenue)

No single tactic. Systematic execution.
15/ Lessons from the turnaround:

Site migrations can destroy years of SEO work in days.

Recovery requires:
โœ“ Technical excellence (foundation)
โœ“ Content velocity (rebuild rankings fast)
โœ“ Link acquisition (authority signals)
โœ“ Strategic page types (quick wins)
โœ“ Conversion optimization (maximize traffic value)

- 94% to +450% in 6 months isn't luck.

It's process, urgency, and execution.

โ€ข โ€ข โ€ข

Missing some Tweet in this thread? You can try to force a refresh
ใ€€

Keep Current with Noel Ceta

Noel Ceta Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @noelcetaSEO

Nov 7
Clients don't care about "Domain Authority."

They care about revenue.

Here's the reporting template that actually makes sense: ๐Ÿงต
1/ The Problem With Most Reports:

What agencies show:

- Domain Authority: +5
- Backlinks: +47
- Keyword rankings: Mixed results
- Technical issues: Fixed 12

Client thinks: "So... is this working?"
2/ The Executive Summary (Page 1):

Show this FIRST:

๐Ÿ“ž Leads: 45 โ†’ 89 (+97%)
๐Ÿ’ฐ Revenue: $67K โ†’ $124K (+85%)
โญ Reviews: 143 โ†’ 187 (+31%)
๐Ÿ“ˆ Local Pack Rankings: 3 โ†’ 14 keywords

Business metrics clients understand.

3/ Section 2: The Money Chart

Visual: Revenue attributed to SEO

Show:

- Month-by-month revenue
- Year-over-year comparison
- Clear upward trend
- ROI calculation

"We spent $3K, generated $57K"

That's a report clients love.
Read 8 tweets
Nov 7
Added lazy loading to all images.

PageSpeed score went from 65 to 92.
Should be great for SEO, right?

Wrong.

Traffic dropped 20%.

LCP (Largest Contentful Paint) went from 1.8s to 4.2s.

The problem? Lazy loaded the hero image.

Here's how to lazy load without killing SEO: ๐Ÿงต๐Ÿ‘‡
1/ What lazy loading actually does

Lazy loading delays image loading until needed.

Normal loading:

- Browser loads all images immediately
- Slow page load
- Wastes bandwidth

Lazy loading:

- Browser loads visible images only
- Fast initial load
- Loads more as user scrolls

The trap:

- Lazy load EVERYTHING = breaks Core Web Vitals
- LCP image must load immediately
2/ The LCP image rule

LCP = Largest Contentful Paint (biggest visible element).

Usually:

- Hero image
- Header image
- Featured product image
- Banner

Critical rule:
NEVER lazy load the LCP image.

Client's mistake:

html

`
`

Should be:

html

`
`
Read 8 tweets
Nov 6
Clients always ask: "How much should we spend on SEO?"

The answer isn't a number. It's a formula.

Here's the budget calculator framework: ๐Ÿงต
1/ The wrong way to budget:

Most companies pick arbitrary numbers:

โŒ "Let's spend $2K/month" (based on what?)
โŒ "Whatever competitors spend" (different goals)
โŒ "What we have left over" (recipe for failure)
โŒ "10% of marketing budget" (no logic)

Budget should be based on goals and market reality.
2/ The SEO budget formula:

Monthly SEO Budget = (Goal Revenue รท Conversion Value) ร— Cost Per Acquisition รท 12

Variables you need:

- Annual revenue goal from SEO
- Average customer value
- Target conversion rate
- Competitive difficulty score
- Current domain authority

Let's break this down:
Read 14 tweets
Nov 5
301 vs 302. 410 vs 404. 503 vs 500.

Most developers think these are interchangeable.

They're not.

Wrong status code cost a client 40% of their link equity.
Another client's 503 errors during maintenance = 8-week ranking recovery.

The HTTP status codes that actually matter for SEO: ๐Ÿงต๐Ÿ‘‡
1/ The redirect mistake: 301 vs 302

301 = Permanent redirect

- Passes 90-95% of link equity
- Tells Google: old page is gone forever
- New page inherits rankings

302 = Temporary redirect

- Passes minimal link equity
- Google keeps indexing old page
- Rankings don't transfer

Client used 302 for redesign.
Lost all rankings.
Took 6 months to recover.

Always use 301 unless truly temporary.
2/ The deletion decision: 404 vs 410

404 = Not Found

- Page doesn't exist (maybe temporarily)
- Google recrawls periodically
- Keeps in index for weeks

410 = Gone

- Page deleted permanently
- Google drops from index immediately
- Faster cleanup

Use 410 for:

- Discontinued products
- Expired promotions
- Removed content

Use 404 for:

- Typo URLs (never existed)
- Temporarily unavailable
Read 9 tweets
Nov 4
Client spent $15K on content.
$10K on link building.
$5K on technical optimization.

Traffic still sucked.

The problem? $5/month shared hosting.

Server response time: 3.2 seconds.
Google crawled 80% less than competitors.

Switched hosting โ†’ traffic increased 210% in 5 weeks: ๐Ÿงต๐Ÿ‘‡Image
1/ Server response time kills rankings

TTFB (Time to First Byte) matters:

Under 200ms: Excellent
200-500ms: Good
500ms-1s: Problematic
Over 1s: Rankings killer

Client's cheap hosting:

- TTFB: 3,200ms
- Google crawled slowly
- Crawl budget wasted
- Pages took weeks to index

Competitor on good hosting:

- TTFB: 180ms
- Google crawled aggressively
- Fast indexing
2/ The shared hosting disaster

Shared hosting problems:

- Share server with 100+ sites
- One site gets traffic spike โ†’ your site slows
- Limited resources (CPU, RAM)
- Slow database queries
- No server-level caching

Client on GoDaddy shared:

- 500 sites on same server
- Neighbor site got DDoS attack
- Client's site went down
- Google couldn't crawl for 3 days
- Rankings tanked
Read 9 tweets
Nov 4
I analyzed link acquisition patterns across 1,000 websites over 18 months.

Found the "Goldilocks zone" for link velocity that maximizes rankings without triggering penalties.

Here's what the data revealed: ๐Ÿงต
1/ The study parameters:

Sample size breakdown:

- 1,000 websites tracked (B2B SaaS and ecommerce)
- 200 new sites (0-12 months old)
- 400 established sites (1-3 years)
- 400 mature sites (3+ years)
- Tracked monthly for 18 months
- Measured: link velocity, rankings, penalties
- Total links tracked: 487,000+
2/ Link velocity by site age (optimal ranges):

New sites (0-12 months):

- Safe zone: 5-10 links/month
- Growth zone: 10-15 links/month
- Risk zone: 15+ links/month
- Penalty rate >30 links/month: 23%

Established sites (1-3 years):

- Safe zone: 5-15 links/month
- Growth zone: 10-20 links/month
- Risk zone: 25+ links/month
- Penalty rate >50 links/month: 18%

Mature sites (3+ years):

- Safe zone: 15-30 links/month
- Growth zone: 20-40 links/month
- Risk zone: 50+ links/month
- Penalty rate >70 links/month: 12%
Read 10 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(