Skip to main content
Tuesday, 28 July 2026 · Evening editionToronto ⛅ 26°CCAD/USD 0.7088 · CAD/EUR 0.6236About UsOur TeamSourcesContactNewsletter

Max CPP Contribution 2024: Rates, Limits & Projections

in a div.n24-wrap? Or have both? Typically it’s

…content…

. Let’s add that wrapper. Place after the

opening and before the intro p, and close before

.
– Intro p with itemprop=”description” exists, but is it max 2 sentences? It’s 3 sentences. Let’s count: “Few numbers matter more… (1) In 2024, that cap reached $68,500… (2) Understanding these limits is the first step… (3)” So 3 sentences. Gate says “max 2 sentences”. Need to shorten to 2 sentences. We can combine or trim. However, Gate 14.1 says intro first sentence takes a stance. The first sentence is “Few numbers matter more to Canadian workers and employers each year than the CPP contribution cap.” That’s a stance. But we need to enforce max 2 sentences. Let’s rewrite to two sentences: “Few numbers matter more to Canadian workers and employers each year than the CPP contribution cap. In 2024, that cap reached $68,500 in pensionable earnings, triggering maximum base contributions of $3,867.50 for employees — and with the new CPP2 tier, the total possible contribution climbed higher.” That’s two sentences. Drop the third sentence. But the third sentence is “Understanding these limits is the first step to planning your payroll and retirement savings.” We can integrate that into the second sentence? Or keep as is but it makes 3. Better to remove it. The intro will still be informative. So rewrite intro to two sentences.

– Check for

with exactly 4 cards (n24-card-num 1-4). Currently there is a snapshot block with 4 cards? Actually there are 4 div.n24-card with n24-card-num 1,2,3,4. Yes, exactly 4. Good.

– Stats line:

present with correct content? Yes.

– Key facts table:

near top. There is a table with metrics 2024. That’s fine.

– H2s per contract: contract execution directives must_cover_questions: There are 5 clusters. The article has H2s: “What are CPP and EI maximums for 2024?”, “What is the maximum CPP contribution for 2026 vs 2025?”, “What is the max CPP 2 contribution for 2024?”, “What is 75% of max CPP?”, “Can you max out your CPP contributions?” All covered. Also “Timeline: CPP contributions 2021–2026”, “What’s clear and what’s not”, “Expert perspectives on CPP contributions”, “Bottom line on max CPP contributions for 2024”, “Frequently asked questions”. That’s fine.

– 2-4 blockquotes from ≥2 speakers. There are 4 blockquotes from CRA and Western University. That’s fine.

– FAQ with ≥5

. There are 9 details items (but the last one is “Related reading” which is not a question; but it’s inside details. We’ll keep as is because it’s part of FAQ. Actually count: the first 8 are questions, the 9th is “Related reading”. That’s okay. Minimum 5.

Gate 2: Contract coverage. All must_cover_questions appear as H2 or H3. They do. No missing.

Gate 3: Claim = source. Every

  • in snapshot cards, key insights, timeline, confirmed-list must have named source anchor. Check the snapshot cards: each card has bullets with sources? The first card: bullets have CRA links. Second card: bullets have Western University link? Actually “2025 and 2026 YMPE figures are projections until officially confirmed later in the year” has a link to Western U. Third card: “2024 is the final enhancement phase…” has Western U link. Fourth card: “2025 YMPE projected at $71,300” has Western U link. All have sources. The timeline list items: each has a source link. The confirmed facts section: each has source link. So okay.

    Gate 4: Fact lock vs verified_facts. Verified facts array is empty in input. So nothing to replace.

    Gate 5: FAQ dedup. Need to compare FAQ items to H2/H3 text. Check for >85% lexical overlap. For example, FAQ “What is the difference between CPP and CPP2?” – this is not an H2/H3. H2s are different. So keep all. But need to ensure at least 5 after dedup. Currently 8 question items. No overlap issues.

    Gate 6: Link hygiene + diversity.
    – Internal links: There are two internal links in the “Related reading” FAQ item: “How to Invest in Stocks…” and “CIBC Investor’s Edge Login…”. Both are internal. Need to strip target and rel. Currently they have target=”_blank” rel=”noopener nofollow”. Remove those attributes.
    – External links: Ensure all external have target=”_blank” rel=”noopener nofollow”. They do. Also ensure no duplicate external URLs. Check: many links to same CRA pages. Each URL used at most once? Actually there are multiple links to same URL. For example, https://www.canada.ca/en/revenue-agency/services/tax/businesses/topics/payroll/cpp-contribution-rates-maximums-exemptions.html appears many times. Gate says “Each external URL at most once.” That means each unique external URL should appear only once. That’s a problem. We need to deduplicate. For each unique URL, keep only the first occurrence, and for subsequent occurrences, either remove the link or link to a different relevant page? But contract says “Each external URL at most once.” So we must ensure no duplicate external URLs. However, the article repeatedly cites the same CRA page. We need to reduce to one link per URL. For subsequent citations, we can remove the hyperlink but keep the text? But gate says “each external URL at most once” and also “max 3 per domain”. So we need to manage. Let’s list all external URLs:
    1. https://www.canada.ca/en/revenue-agency/services/tax/businesses/topics/payroll/cpp-contribution-rates-maximums-exemptions.html (CRA CPP) – appears many times.
    2. https://www.canada.ca/en/revenue-agency/services/tax/businesses/topics/payroll/calculating-deductions/making-deductions/second-additional-cpp-contribution-rates-maximums.html (CRA CPP2) – appears multiple times.
    3. http://www.uwo.ca/hr/pay/cpp.html (Western University) – appears multiple times.
    4. https://www.canada.ca/en/services/benefits/ei.html (Service Canada) – appears multiple times.

    All are from same domains: canada.ca (CRA and Service Canada both under canada.ca? Service Canada is also canada.ca) and uwo.ca. So max 3 per domain: canada.ca URLs count as same domain? Yes, canada.ca. There are 3 different paths under canada.ca: one for CPP rates, one for CPP2, one for EI. That’s 3, okay. But each path is used multiple times. We must ensure each URL appears at most once. So for each unique URL, we need to keep only the first occurrence and remove subsequent links (or replace with in-text citation). But the article is heavily reliant on these sources. We can remove the hyperlink from repeated citations but keep the source name as plain text? However, the gate says “Each external URL at most once.” It doesn’t say we can’t have the text without link. We can remove the anchor for duplicates. Also the internal links need target/rel stripped.

    Let’s do a thorough link audit. We’ll process the HTML and for each external anchor, check if URL has been seen before. If yes, remove the anchor and keep the text (the source name) as plain text. Also ensure max 3 per domain. Since we have only 3 unique paths under canada.ca, that’s exactly 3. But we have also uwo.ca (one path). So total 4 unique URLs. That’s fine. But duplicates will be removed.

    Also need to ensure that for the internal links in Related reading, we strip target and rel.

    Gate 7: JSON-LD. Need to have exactly two



    Ryan Clarke
    Ryan ClarkeStaff Writer

    Ryan Clarke is Senior Markets Reporter at True North Brief, covering breaking stories and explainers.