Schema markup goes in your HTML document, and you have three format options: JSON-LD, Microdata, or RDFa. JSON-LD is the clear winner for most situations. You place it inside a <script type="application/ld+json"> tag, usually in the <head> section or just after the opening <body> tag. Google explicitly recommends JSON-LD because it separates your structured data from the visible content, making it simpler to implement and update without breaking your design. Microdata and RDFa require embedding schema attributes directly into your HTML tags (like <div itemscope itemtype="https://schema.org/Product">), which works but creates maintenance headaches. If you're running WordPress, plugins like Yoast or RankMath inject JSON-LD automatically. For custom sites, you can hard-code it into templates or generate it server-side. For different schema types, placement varies slightly. Organization and WebSite schema typically go site-wide in your header template. Article, Product, or Event schema should appear on their respective page types. Breadcrumb schema can live in the header or near your actual breadcrumb navigation. Local Business schema goes on your contact or location pages. At Ottawa SEO, we usually implement schema in this order: Organization/WebSite first (site-wide), then Article schema for blog content, then Product or Service schema depending on the business model, and finally Breadcrumb and FAQ schema where applicable. We add it directly to theme templates for custom sites or use Schema Pro for WordPress builds managing 50+ sites in our portfolio. One critical rule: validate every implementation with Google's Rich Results Test and Schema Markup Validator before deploying. Malformed JSON will break the entire block, and Google won't show rich results for broken markup. Also, never hide schema-marked content from users—Google penalizes markup that describes invisible elements. The schema should reflect what's actually on the page, visible to real visitors.