# Doany Integration Pages — pSEO Plan

> **Date:** April 14, 2026
> **Content freeze:** April 19, 2026
> **Partner campaign launch:** Week of April 21, 2026
> **Scope:** 18 app integration landing pages

---

## 1. Executive Summary

We have 18 integration pages launched April 8 that currently rank poorly (positions 18–44; two unranked). Zapier owns position 1 on every target SERP. Before partner campaign traffic arrives April 21, we need to upgrade these pages from generic feature lists into high-value, workflow-proof landing pages — fix the technical SEO hygiene blocking indexation, and establish a defensible internal linking architecture.

**Goal:** Move 10+ pages into positions ≤20 within 30 days and increase non-brand organic assisted signups.

---

## 2. Page Tiering & Indexation Decisions

Pages are tiered by search volume, current traction, and data defensibility. Tiering determines effort allocation and indexation policy.

### Tier 1 — Full Build (Index, prioritize)
High volume and/or strong product traction. These get maximum content investment.

| # | App | Volume | Current Rank | Active Workspaces | Partner Tier |
|---|-----|--------|--------------|-------------------|--------------|
| 1 | Slack | 1,300 | 18 | 1,240 | certified |
| 2 | Google Sheets | 920 | 24 | 690 | standard |
| 3 | Notion | 880 | 21 | 980 | certified |
| 4 | HubSpot | 760 | 26 | 760 | certified |
| 5 | GitHub | 620 | 23 | 410 | certified |
| 6 | Salesforce | 410 | 39 | 315 | standard |

### Tier 2 — Standard Build (Index)
Moderate volume, enough workspace data to prove value.

| # | App | Volume | Current Rank | Active Workspaces | Partner Tier |
|---|-----|--------|--------------|-------------------|--------------|
| 7 | Asana | 350 | 30 | 245 | standard |
| 8 | Airtable | 320 | 27 | 280 | standard |
| 9 | Jira | 290 | 34 | 190 | standard |
| 10 | Stripe | 280 | 31 | 175 | standard |
| 11 | Shopify | 260 | 36 | 150 | basic |
| 12 | Trello | 190 | 28 | 130 | basic |
| 13 | Zendesk | 170 | 33 | 88 | standard |
| 14 | Intercom | 160 | 32 | 95 | standard |
| 15 | Mailchimp | 140 | 41 | 72 | basic |
| 16 | ClickUp | 120 | 44 | 54 | basic |

### Tier 3 — Noindex for Now (`noindex, follow`)
Below the 40-workspace threshold and/or insufficient workflow proof. Keep pages live for partner links but withhold from index and sitemap until quality threshold is met.

| # | App | Volume | Current Rank | Active Workspaces | Partner Tier |
|---|-----|--------|--------------|-------------------|--------------|
| 17 | Linear | 70 | not ranked | 33 | basic |
| 18 | Microsoft Teams | 95 | not ranked | 27 | basic |

**Action:** Add `<meta name="robots" content="noindex, follow">` to Linear and Microsoft Teams pages. Remove from `/sitemaps/integrations.xml`. Revisit when workspaces > 40 and at least 2 unique workflows exist.

---

## 3. URL & Canonical Strategy

### Canonical URL structure
```
Hub:   https://doany.ai/integrations/
Spoke: https://doany.ai/integrations/{app-slug}/   (trailing slash)
```

### Redirects required (before April 19)

| Legacy URL | Redirect To | Type |
|------------|-------------|------|
| `/app-integrations/slack` | `/integrations/slack/` | 301 |
| `/app-integrations/notion` | `/integrations/notion/` | 301 |
| `/app-integrations/hubspot` | `/integrations/hubspot/` | 301 |
| *(repeat for all 18 apps)* | | 301 |

### Parameter handling
- Add `<link rel="canonical" href="/integrations/{app-slug}/">` to every page (6 pages are currently missing canonicals — fix immediately).
- Block `?ref=`, `?category=`, and all query-parameter variants from indexation via `robots.txt` disallow **or** canonical-only approach (canonical is safer for link equity).
- Specific rule: `/integrations?category=*` → canonical to `/integrations/`.

---

## 4. Page Template Spec

Every indexable integration page uses this structure inside `app/integrations/[slug]/page.tsx`:

### 4.1 Title & Meta Templates

```
<title>{App Name} + Doany Integration — Automate {Category} Workflows</title>
<meta name="description" content="Connect {App Name} to Doany in {setup_time} minutes.
  Automate workflows like {top_workflow_1_short}. {trust_signal}. Start free.">
```

**Trust signal logic:**
- If `partner_tier === 'certified'` → "Certified integration partner"
- If `two_way_sync === true` → "Full two-way sync"
- Else → "Used by {active_workspaces}+ teams"

### 4.2 Content Sections (top to bottom)

| Section | Content Source | Uniqueness Driver |
|---------|---------------|-------------------|
| **1. Hero** | `app_name`, `category`, key outcome | App-specific outcome headline, NOT generic "connect A to B" |
| **2. Social proof bar** | `active_workspaces`, `connected_accounts` | Real usage numbers per app |
| **3. Top workflows (×2–3)** | `top_workflow_1`, `top_workflow_2` from CSV | Each workflow described in 3–4 sentences with trigger → action → outcome structure |
| **4. How it works** | `auth_type`, `setup_time`, `two_way_sync` | Conditional copy per auth type; setup time varies; sync direction varies |
| **5. Trigger/action matrix** | Data pipeline (per-app triggers & actions) | Unique table per app — NOT shared boilerplate |
| **6. Use-case by team** | Category + workflow data | Map workflows to Ops / RevOps / Agency personas |
| **7. FAQ (3–5 items)** | `faq_topic` + support ticket themes | App-specific questions; at least 2 unique per page |
| **8. Related integrations** | Category cluster + workflow adjacency | 3 links to related spoke pages |
| **9. CTA** | Partner tier logic | Primary: "Start free with {App} integration" / Secondary: "Book a demo" |

### 4.3 Content Differentiation Rules

To avoid thin/duplicate content penalties:

1. **Hero headline:** Must name the specific outcome, not just "Connect {App} to Doany." Example:
   - ✅ "Route Slack alerts into automated workflows — no code, no missed signals"
   - ❌ "Slack + Doany Integration"

2. **"How it works" copy:** Use conditional blocks based on `auth_type`, `two_way_sync`, and `setup_time`. Do NOT reuse identical 3-step copy across all 18 pages.

3. **Workflow descriptions:** Write each in trigger → action → outcome format with app-specific field names. Minimum 60 words per workflow.

4. **FAQ:** At least 2 of 3–5 questions must be unique to the app (pulled from `faq_topic` and support data). Shared questions (e.g., "Is it free to start?") can appear but must not dominate.

---

## 5. Structured Data (JSON-LD)

Implement two schemas per page using the existing JSON-LD component:

### SoftwareApplication
```json
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "Doany + {App Name} Integration",
  "applicationCategory": "BusinessApplication",
  "operatingSystem": "Web",
  "offers": {
    "@type": "Offer",
    "price": "0",
    "priceCurrency": "USD"
  }
}
```

### FAQPage
```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "{faq_question}",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "{faq_answer}"
      }
    }
  ]
}
```

---

## 6. Internal Linking Architecture

### Hub → Spoke
- `/integrations/` hub page must link to **all 16 indexable** spoke pages (exclude the 2 noindexed).
- Currently only 7 of 18 are linked from hub — **fix the remaining 9 immediately**.
- Group links on hub by category cluster (see below).

### Spoke → Spoke (related integrations module)
Each page links to 3 related pages based on these clusters:

| Cluster | Apps |
|---------|------|
| Team Chat | Slack, Microsoft Teams* |
| CRM | HubSpot, Salesforce |
| Project Management | Asana, Trello, ClickUp, Jira |
| Engineering | GitHub, Jira, Linear* |
| Support | Intercom, Zendesk |
| Data & Docs | Notion, Google Sheets, Airtable |
| Ecommerce & Payments | Shopify, Stripe |
| Marketing | Mailchimp |

*\* = noindexed; link to them with `follow` but do not link FROM them to indexed pages as a ranking signal.*

**Cross-cluster links** (workflow adjacency):
- Slack ↔ Jira (incident alerting)
- HubSpot ↔ Slack (deal stage notifications)
- GitHub ↔ Jira (issue sync)
- Stripe ↔ Shopify (payment workflows)
- Zendesk ↔ Intercom (support escalation)
- Notion ↔ Asana (project handoffs)

### Blog backlinks
- 14 blog posts currently link to legacy `/app-integrations/` URLs → update all to new canonical `/integrations/{app-slug}/` paths.

### Breadcrumbs
```
Home > Integrations > {App Name}
```
Implement with `BreadcrumbList` JSON-LD on every spoke page.

---

## 7. Sitemap Strategy

Split the current single sitemap into segmented files:

| Sitemap | Contents | Notes |
|---------|----------|-------|
| `/sitemaps/pages.xml` | Core marketing pages | Existing |
| `/sitemaps/integrations.xml` | 16 indexable integration pages + hub | **New — exclude Tier 3 pages** |
| `/sitemaps/blog.xml` | Blog posts | Existing |

Add `<lastmod>` using `last_verified_at` from integration data so crawlers prioritize recently-verified pages.

---

## 8. Content Gap Fixes by App (SERP-Informed)

Specific actions to close the gaps identified in SERP snapshot data:

| App | Gap | Fix |
|-----|-----|-----|
| **Slack** | Top results show concrete trigger-action examples; our page is generic | Add 3 specific trigger→action workflows with channel-level detail |
| **Notion** | Missing setup screenshots and app-specific FAQ | Add auth-flow screenshot + 3 Notion-specific FAQs on database rate limits |
| **HubSpot** | Weak trust signals vs certified partner badges elsewhere | Surface "Certified integration partner" badge prominently; add connected_accounts count |
| **Salesforce** | No enterprise use cases or field mapping | Add enterprise use-case section + Salesforce object → Doany field mapping table |
| **Google Sheets** | Competitors show template libraries and sample automations | Add 2 sample automation templates with before/after sheet screenshots |
| **Airtable** | No differentiated workflows by team | Break workflows into Ops vs RevOps vs Agency sections |
| **Asana** | Searchers want project workflow examples, not feature bullets | Replace feature list with 2 end-to-end workflow narratives |
| **Trello** | Copy overlaps heavily with Asana/Jira pages | Rewrite with Trello-specific terminology (boards, cards, lists); unique hero |
| **Jira** | No engineering-specific incident/bug escalation examples | Add incident-escalation workflow with severity → priority mapping |
| **GitHub** | Missing security/permission detail for technical buyers | Add "Repository access scopes" section with permission matrix |
| **Intercom** | No support-team workflows from real data | Add VIP escalation + churn-risk tagging workflows with ownership sync detail |
| **Zendesk** | No SLA-focused workflow examples | Add SLA-breach → task creation workflow + CSAT detractor routing |
| **Shopify** | Lacks ecommerce conversion/refund automation examples | Add abandoned-cart + refund-spike workflows with webhook retry notes |
| **Stripe** | No finance safety notes or reconciliation details | Add PCI data boundary callout + failed-payment → churn-save workflow |
| **Mailchimp** | Very low unique content; no campaign troubleshooting | Rewrite from scratch; add audience sync delay FAQ + campaign pause workflow |
| **ClickUp** | Thin page with duplicated PM copy | Differentiate from Asana/Trello with space/list mapping and sprint-specific workflows |
| **Linear** | Low demand + low usage (noindex) | Minimal build; focus on engineering team key mapping; revisit post-campaign |
| **MS Teams** | Low usage + setup friction (noindex) | Minimal build; document tenant admin approval steps clearly; revisit post-campaign |

---

## 9. Execution Timeline

### April 14 (Today)
- [ ] **Technical SEO fixes (parallelize)**
  - Set canonical tags on the 6 missing pages
  - Implement 301 redirects from all `/app-integrations/*` legacy URLs
  - Split sitemap: create `/sitemaps/integrations.xml` with 16 indexable pages
  - Add `noindex, follow` to Linear and Microsoft Teams pages
  - Add `?ref=` / `?category=` parameter handling (canonical-only)
  - Update 14 blog post links from legacy to new URLs

### April 15
- [ ] **Hub page overhaul**
  - Add links to all 16 indexable spoke pages (9 missing today)
  - Group by category cluster
  - Add intro copy positioning Doany's integration value prop

- [ ] **Tier 1 content builds begin** (Slack, Google Sheets, Notion, HubSpot, GitHub, Salesforce)
  - Write unique hero headlines
  - Build trigger/action workflow sections (60+ words each)
  - Create per-app FAQ sections
  - Implement conditional "How it works" blocks
  - Add SoftwareApplication + FAQPage JSON-LD
  - Add BreadcrumbList JSON-LD
  - Add related-integrations module (3 links per page)

### April 16–17
- [ ] **Tier 2 content builds** (Asana, Airtable, Jira, Stripe, Shopify, Trello, Zendesk, Intercom, Mailchimp, ClickUp)
  - Same template as Tier 1 but with standard-depth workflows
  - Deduplicate Trello/Asana/ClickUp/Jira copy — each must have unique hero + unique workflow descriptions

### April 18
- [ ] **QA pass — Pre-launch checklist**
  - [ ] Every indexable page has unique `<title>` and `<meta description>`
  - [ ] Every page has canonical tag pointing to self
  - [ ] Every page has SoftwareApplication + FAQPage + BreadcrumbList JSON-LD
  - [ ] Every page has ≥2 inbound internal links
  - [ ] Every page has related-integrations module with 3 links
  - [ ] No two pages share identical "How it works" copy blocks
  - [ ] Each workflow description is ≥60 words with app-specific field names
  - [ ] Noindexed pages (Linear, MS Teams) are excluded from sitemap
  - [ ] Legacy URLs 301 → new URLs (spot-check all 18)
  - [ ] Blog links updated (spot-check all 14)
  - [ ] Page speed check (target < 2.5s LCP on each page)
  - [ ] Submit `/sitemaps/integrations.xml` to Google Search Console

### April 19 — Content Freeze
- [ ] Final review; no more copy changes
- [ ] Request indexing for Tier 1 pages via GSC URL Inspection

### April 21+ — Partner Campaign Launch
- [ ] Monitor GSC for indexation rate (target: 16/16 indexed within 7 days)
- [ ] Track rank movement weekly for all 16 primary keywords
- [ ] Monitor for crawl errors, soft 404s, or thin content warnings
- [ ] Track "Start free with {App}" CTA clicks and signup conversion per page
- [ ] Re-evaluate Linear and MS Teams for index promotion at day 30

---

## 10. Success Metrics (30-Day Targets)

| Metric | Current | Target |
|--------|---------|--------|
| Pages indexed | ~12 of 18 | 16 of 16 indexable |
| Avg rank (Tier 1 keywords) | 25.2 | ≤18 |
| Avg rank (Tier 2 keywords) | 33.6 | ≤28 |
| Non-brand organic sessions to /integrations/* | ~low | +40% vs baseline |
| Integration page assisted signups | unmeasured | establish baseline + track |
| Crawl errors on integration pages | unknown | 0 |

---

## 11. Risk Register

| Risk | Likelihood | Impact | Mitigation |
|------|-----------|--------|------------|
| Thin content penalty on low-proof pages | Medium | High | Noindex Tier 3; conditional content blocks on Tier 2 |
| Keyword cannibalization between PM apps (Asana/Trello/ClickUp/Jira) | Medium | Medium | Unique heroes, unique workflows, distinct terminology per app |
| Legacy URL equity loss from redirects | Low | Medium | 301 (not 302); update all internal links to new paths |
| Partner campaign traffic hitting non-indexed pages | Medium | High | Prioritize Tier 1 indexation requests; use `?ref=partner` on campaign links (canonicalized) |
| Crawl budget waste on query-param URLs | Medium | Low | Canonical tags + robots.txt parameter rules |

---

*Plan prepared April 14, 2026. Deadline: content freeze April 19, campaign launch April 21.*
