Support · Care & studio · 18 min read
Accessibility and privacy for a Canadian site
WCAG and PIPEDA are how we start — not a US checklist pasted into a Canadian store.

A Canadian start, not a US checklist
SYCGeeks is a Vancouver studio. We build public-facing sites, stores, and apps for Canadian teams in English, French, or both. Accessibility and privacy are not a phase we bolt on after the brand deck. They are how we start: WCAG practices a person can actually finish, and PIPEDA purpose limitation a privacy page can actually defend. A US cookie banner pasted into a CAD checkout is not compliance. It is decoration that will fail the first time a college, a bank, or a Quebec visitor asks a precise question.
PIPEDA — the Personal Information Protection and Electronic Documents Act — is federal private-sector law about why you collect, what you collect, and what you do with it. Several provinces have their own statutes. We are not your privacy counsel and we do not sell a certificate. We do refuse to ship a form, a chatbot, or an analytics tag whose purpose is invisible. If you cannot say the purpose in one sentence on the privacy page, we do not collect the field.
WCAG is the shared language for whether a stranger can use the thing: see it, keyboard it, hear it, understand the error. We do not promise a numbered conformance logo in marketing type. We do treat contrast, focus, labels, and text alternatives as launch work, the same way we treat a French receipt. A pretty site that a keyboard user cannot book on is not launched. A store that a screen reader cannot pay in is not launched.
Health, legal, and financial clients get a tighter review because their colleges and insurers already have rules that sit on top of the general law. Send those rules in the brief. We would rather design the form, the retention note, and the bilingual legal page in week one than retrofit in week nine. If you wait until a complaint, the fix is still possible — as a defect if we shipped the gap, as a published add-on if you are adding a new vendor or a new purpose.
This guide is studio practice, not a statute. Book a compliance consult if you want a structured 45-minute review of PIPEDA, accessibility, and checkout risk. Write admin@sycgeeks.ca with the URL, the languages, and the college PDF. Call +1 (672) 200-7924 on a weekday if a live form is collecting something it should not and you need the field off today. Care’s reserved hour can land a small label or contrast fix. A new chatbot is not a small label.
Contrast, keyboard, and labels are launch work
Contrast is the first thing a Vancouver afternoon on a phone will punish. Light grey text on a cream hero looks refined in Figma and disappears on Granville in July. We design primary actions — Book, Pay, Submit, Prendre rendez-vous — to hold contrast in both themes you actually ship. Placeholder text is not a label. A button that relies on colour alone to say “error” is not finished. If you later restyle the brand, contrast is re-tested, not assumed.
Keyboard paths are how a lot of people, and every automated test we trust, move through the site. You should be able to tab from the skip link to the main offer to the form without trapping in a cookie banner, a chatbot launcher, or a video that ate the focus. Focus styles must be visible. We do not remove outlines because a mood board said “clean.” If a modal opens, focus moves into it and returns when it closes. If we cannot keyboard a booking, we are not ready to take CAD for that booking.
Labels are how a screen reader and a tired human on a phone know what a field is. Every input has a persistent label, not only a placeholder that vanishes. Required state is in text, not only a red asterisk a contrast check will fail. Errors say what went wrong and how to fix them, in the language of the page. A French form that throws an English “Please fill out this field” is a Canadian product bug. We test that before launch, including the payment path.
These three — contrast, keyboard, labels — are launch work on every marketing site, store, and app we ship. They are also the defects we see most after a client restyles a button in a CMS they were not supposed to touch. If you have care, that kind of restore belongs in the reserved hour and then in the dashboard notes. If you are asking for a new visual system, that is a quote. Do not hide a rebrand inside “fix the contrast.”
Mobile is not a second pass. Most Canadian bookings and checkouts happen on a phone. Hit areas, zoom, and orientation have to work. Apple Pay belongs when Square or Stripe can settle it; we will not fake the button in a browser that cannot show it. A wallet path still needs a labelled error when the database is unreachable. Blank failures train people to blame themselves. Readable errors are an accessibility feature and a payments feature.
Forms, errors, and French receipts
A form is where accessibility and PIPEDA meet. Every field must have a purpose you can print on the privacy page. Name and email to answer a brief is a purpose. Date of birth on a marketing newsletter is usually not. A health question on a general contact form is a college conversation, not a default. We will ask why the field exists. If the answer is “the template had it,” the field dies before launch.
Error text is part of the form, not an afterthought. It must be associated with the field, available to a screen reader, and correct in both official languages if you bought both. We do not ship a French route whose validation messages are English. We do not ship a success state that says “thanks” while the email receipt is blank. Before launch we submit the form, fail it on purpose, and read every state. After launch, a broken error string is a defect.
Receipts are legal-looking surfaces even when they are not formal legal opinions. Tax lines, refunds, item names, and the CAD symbol have to be right. A French receipt that is English with accents is a product bug we treat like a failed payment. Before a store goes live we place a real CAD order, refund it, and read the receipt. Care’s hosting watch includes the jobs that generate those receipts. If Square or Stripe changes a template, we notice, we do not wait for a customer in Laval to screenshot it.
Appointments are forms that move time and sometimes money. Service names should be the words a client would say, with duration and CAD price visible. Pacific time, buffer, and duration are part of the design. Confirmation must appear in the dashboard, not only in email. A booking that only exists in an inbox is how people double-book a Tuesday. Keyboard and labels apply to the calendar the same way they apply to checkout.
If you add a field after launch, treat it as purpose, not as copy. A new checkbox that shares the address with a partner is a PIPEDA change. It may be a reserved-hour label if the purpose already existed and we missed the wording. It is a checkout or page add-on if the purpose is new. Write the purpose in the project notes. We will say the bucket in one sentence and update the privacy page in the same piece of work.
Images, alternatives, and what a screen reader should skip
Images that carry meaning need real alternative text. “Team photo” is not real if the point of the photo is that the clinic is on Main Street and wheelchair access is at the lane. Decorative photos still need a decision: empty alt if they are truly decoration, or a short description if they are not. We do not dump filenames into alt. We do not write novels. We write the fact a person who cannot see the image would miss.
Product stills we generate for a catalogue follow the same rule. The alt should name the product and the view, not “AI image 04.” If your college restricts lifestyle claims, the picture and the alt stay boring on purpose. Stock handshakes are how Canadian professional sites look like everyone else and also how alt text becomes nonsense. We would rather a quiet still and a clear service page than a crowded hero no one can parse.
Retina assets matter for low vision as much as they matter for brand. A soft JPEG that blurs on a phone is an accessibility problem and an SEO problem. We ship images that hold on a modern display as part of the site, not as a later package. If you replace our export with a 200-kilobyte screenshot from a slide deck, expect a contrast and sharpness defect in the launch window. Care can restore the asset. Care will not pretend the screenshot is fine.
Video and motion need a pause and a transcript or captions if they carry information. Autoplay with sound is a hard no on a marketing page we ship. A looping animation that is the only way to understand a service is a design defect. If you add a reel after launch, send the caption file or budget the language pass. French captions that are burned-in English are the same class of bug as a French receipt that is English with accents.
Icons in the interface need an accessible name if they are the only label. A cart, a language switch, a menu — if there is no visible text, there is an aria name in the language of the page. The language switch itself must keep the person’s place. We design that as architecture, not as a plugin. Losing your cart because you asked for French is a product failure, not a “nice to have.”
PIPEDA is about purpose, not a pile of checkboxes
Purpose limitation is the heart of a Canadian privacy page. You name what you collect, why, and what you will not do with it. “To answer your brief and send a CAD quote” is a purpose. “To improve the experience” is fog. We write the privacy page as part of the build when the site collects anything: a form, a booking, a checkout, an account. We do not drop a paragraph copied from a US generator that talks about state law you do not have.
Consent has to match the purpose. A required checkbox that says you agree to marketing in order to pay for a jacket is the wrong shape. Checkout should collect what checkout needs. Marketing should be a separate, refusible ask. We will not hard-gate a purchase on a newsletter. If your CRM vendor cannot separate those purposes, we change the vendor conversation, not the law.
Retention is a sentence, not a feeling. How long does the brief sit in the dashboard? How long does Square keep the card token? How long do we keep a student hour log? If you do not know, we find out from the processor and write the honest version. “As long as needed” is not a retention period. Care’s dashboard notes should not become an accidental second CRM full of health details somebody pasted in March.
Access and correction are operational, not theoretical. If someone writes admin@sycgeeks.ca and asks what you hold about them on a site we operate, you need a path. We can help you find the records we built — form inboxes, accounts, order IDs. We cannot invent a process for a tool you bolted on without telling us. Name the processors in the brief: Square, Stripe, PayPal, a newsletter vendor, a chat vendor. Invisible processors are how purpose limitation dies.
Safeguards are boring and required. We do not put live keys in a public repository. We do not share your briefs, credentials, or customer data except with processors required to deliver the work. After full payment you own the operational data we delivered for you. We still keep reusable studio methods. If you need a written NDA on top of the terms, say so before production. Terms are governed by the laws of British Columbia. That sentence belongs on the legal page too.
Chat and analytics are personal information
A chatbot that asks a name, an email, or a symptom is collecting personal information. So is a live-chat widget that records a transcript. So is an analytics tag that ties a visit to a device and often to a form submit. “It is only analytics” is not a legal category that empties the privacy page. If we add a chatbot or a newsletter, the privacy page says so, in both languages if you bought both. We do not drop a tracker because a template did.
Default off is the honest studio position for third-party chat and for advertising pixels. First-party, purpose-limited analytics can be justified if you need to know whether the booking page dies on mobile. An advertising pixel that follows a visitor across the web after they asked about a legal clinic is a different product. We will say no, or we will write the purpose so plainly your college can read it. We will not hide the pixel in a tag manager and call it care.
Vendors are processors. Their servers, their subprocessors, their training use of transcripts — those facts belong in the brief. If a chat vendor stores data outside Canada, say whether that is acceptable for your college or your insurer before we install it. If it is not acceptable, we pick another vendor or we do not ship chat. Speed to “modern” is not a reason to send client intake to a model you cannot name.
After launch, adding chat or analytics is new scope. It is not a reserved-hour copy tweak. It changes purpose, vendors, and often the cookie and consent story. Pay the published add-on that matches the work — usually a page or a checkout-adjacent change — or ask for a CAD quote if the vendor work is larger. Care members pay about 25 percent less on those add-ons. Care does not mean we install a pixel on a Friday because a campaign starts Monday.
If a chat or analytics tool is already leaking into production without a privacy-page sentence, that is a defect on our watch if we shipped it, and an incident if somebody else dropped it. Write the URL and the vendor. We will remove or disclose. Do not leave a “temporary” pixel for a quarter. Temporary is how personal information becomes a habit. Habits are what PIPEDA complaints are made of.
Professional colleges, health, legal, and money
If your college or insurer has advertising, testimonial, or intake rules, they override our taste and sometimes override a pattern that would be fine for a retailer. Lawyers, physicians, pharmacists, engineers, accountants, architects, realtors — send the current guide in the brief. We design titles, claims, and contact forms to those rules. We will not ship “best in Vancouver” if your college treats that as a prohibited superlative. We will not put client stories on the home page if testimonials are restricted.
Health intake is not a Typeform you found. Questions about symptoms, medications, or insurance numbers have a purpose that must be necessary and a retention story that must be short. Encryption in transit is the floor, not a selling point. If the college expects a portal instead of email, we will say so and quote a portal. Care’s reserved hour can fix a label. It cannot turn a public form into a clinic system.
Legal and financial sites have a second problem: people paste confidential facts into the first box they see. We write the intake so the first box is the safe one — name, callback, the nature of the matter without the matter. We put a warning on open text. We do not put a chatbot on a criminal or family-law page unless you have a written process for those transcripts. That is not us being precious. That is us having seen the paste.
Alcohol, cannabis, and other regulated goods have advertising and age-gate rules that change by province. Name the provinces you ship to before we pick a theme. The gate must be keyboardable and must not collect a date of birth you will never check. Collecting a birth date “for the vibe” is purpose failure. Checkout tax must match the goods and the province. A pretty store that cannot collect tax correctly is not finished.
When a college updates a rule after launch, send the PDF in the project notes. Updating a footer licence line or a disclaimer is usually reserved-hour work if you have care. Rewriting the service architecture because a class of claim is now banned is a page add-on or a quote. We will say which. We would rather you send the rule late than hide it. Hidden rules are how week nine happens.
What we review before you go live
Before launch we walk the keyboard path, the contrast of primary actions, the labels on every form, and the alt decisions on the images that carry meaning. We submit forms until they fail and until they succeed. We place a CAD order and refund it if you have checkout. We read the receipt in English and in French if you bought both. We open the privacy page and check it against the fields and vendors that actually exist, not the fields we wished you had deleted.
We check the language switch keeps place, that legal pages exist in both languages, and that error states are not a dump of English. We check that the cookie or tracker story matches reality. We check that Square appointments, if you have them, show duration and CAD price in words a client would say. We check that the dashboard will show the booking. Email-only confirmation is a known way to double-book.
You should assign one person who can approve. Accessibility and privacy comments die when five partners each have a taste note and nobody can say yes to a label. The delay we see most is not engineering. It is waiting for legal pages, a price list, or a college disclaimer. If you want speed, send those in the first brief. A messy brief is fine. An invisible legal constraint is not.
The launch window — 30 days, up to 90 on denser builds — is for the defects this review should have caught and for the ones traffic finds. A contrast fail that appears only on a specific Samsung browser is still a defect. A French error string that appeared after a dependency bump is still a defect. A tracker we did not disclose is still a defect. Report it with the URL, the language, and the browser. We would rather spend twenty minutes reproducing than two days guessing.
If you want a structured outside-the-build conversation, book the compliance consult: 45 minutes, $350 CAD, PIPEDA, accessibility, and checkout risk for Canadian teams. Bring the live URL, the college PDF, and the list of vendors you already pay for. We will leave a punch list you can put in the project notes. That consult is not a certificate and not a legal opinion. It is a Vancouver studio telling you which surfaces will fail a precise question.
After launch: a defect, care, or a compliance add-on
After go-live, accessibility and privacy work still sorts into the same three buckets as every other request. Restore what we shipped — a label, a contrast fail, a French receipt, a tracker we left undocumented — is a launch-window defect or, later, the reserved care hour. Change what you bought — a new chatbot, a new analytics vendor, a new form purpose, a second language for legal pages — is a published add-on on the same project. Care members pay about 25 percent less. A full audit of a site we did not build is a quote.
Monthly care is $450 CAD. Yearly care is $4,500 CAD with two months included. Both include hosting watch on the jobs that move money and personal information, small copy and dependency updates, one reserved studio hour, and a dashboard note of what changed. A contrast patch and a privacy-page sentence belong there. Installing Intercom, adding a Meta pixel, or collecting a health answer does not. We will not silently fold that work into care. Silent overages are how trust dies.
Put the request in the project notes with the URL, the language, and the purpose you believe you have. If production is collecting something it should not, call +1 (672) 200-7924 on a weekday and write admin@sycgeeks.ca with the same facts. We can remove a field faster than we can debate it. After the field is off, we write the note so the next operator does not turn it back on in March because a template “looked empty.”
Published add-ons that often carry compliance work: an extra page when the privacy or accessibility statement needs a real information architecture; an extra language pass when legal and checkout labels were English-only; a checkout change when a field, a tax rule, or a wallet path is the problem; eight reserved hours when the punch list is longer than an hour and shorter than a rebuild. You pay on that project. We set status back to active. We keep the history. We do not start a second thread.
Read the care guide for the reserved hour versus the add-on. Read more work after launch for how we reopen the record. Read invoices in CAD if your board is still asking why the quote, the care line, and the processor fee are three different numbers in Canadian dollars. WCAG and PIPEDA are how we start. They are also how we stay after launch — on the same project, in English and French, from Vancouver, without a US checklist pretending to be Canadian law.



