Blog

Latest news and updates from Workover.

Changelog
On-page SEO: what to check on every page (with a 14-point checklist)
SEO

On-page SEO: what to check on every page (with a 14-point checklist)

On-page SEO is everything you control on the page itself to help search engines understand it and people choose it: the title, the URL, the headings, the words, the links, the images, and a handful of tags in the HTML that visitors never see. This guide covers all of it, in the order it matters, with the rule for each element taken from Google’s own documentation rather than from other guides, and tested against pages that rank today. It also includes something the other guides do not: a scan of 73 pages that rank on Google’s first page today, showing what Google actually did with their titles, and what happened to those pages between the HTML and the browser. If you only have ten minutes, skip to the checklist near the end and run it on your most important page. If you have an hour, read the elements first. What on-page SEO is, and is not A page ranks when a search engine can tell what it is about, decides it is a good answer, and shows a result people want to click. On-page SEO covers all three: Understanding. The title element, headings, URL, body text, image alt text and structured data tell search engines what the page is about. Quality. Whether the content answers the question the searcher had, says something the other results do not, and comes from someone who knows the subject. Presentation. What the search result looks like: the title link and the snippet, both of which Google builds from what is on the page. The three kinds of SEO overlap, but the division of labor is clear enough to put in a table. Kind On-page Technical Off-page What it is What the page says and how it is marked up Whether search engines can reach, render and index the page What other sites say about the page Who fixes it The writer or editor A developer or the platform Whoever earns the links Examples Title, meta description, headings, content, internal links, images, structured data Crawlability, sitemaps, redirects, speed at the server, HTTPS Backlinks, mentions, reviews How fast it changes Every edit, every template update Every deploy Slowly Two technical items, canonicals and JavaScript rendering, sit close enough to the page that this guide treats them as on-page. Writers do not set them, but writers get blamed when they go wrong. The on-page elements, with what Google says about each Most on-page advice is passed from one guide to the next without a source. Where Google documents a rule, it is quoted and linked here. Where Google is silent, that is said too. 1. The title element The title element is the strongest single statement of what a page is about, and it is usually the text Google turns into the blue title link in results. Google’s documentation on title links asks for titles that are “unique to the page, clear and concise, and accurately describe the contents of the page”, and says to make sure “every page on your site has a title specified in the title element”. Four things in that documentation contradict common advice: There is no length limit. Google says “there’s no limit on how long a title element can be”. Title links are truncated to fit the device, so the rule is to put the important words first, not to count characters. The 50 to 60 character guideline is a rough estimate of what survives truncation on desktop. Google rewrites titles it does not trust. Half-empty titles (“| Site Name”), boilerplate that differs by one word across pages, titles with stale years, and titles that do not match the page are replaced from other sources: the page’s main visible heading, the og:title , other prominent text, and the anchor text of links pointing at the page. The site name is handled separately. Google shows a site name beside the result and may drop a brand suffix from the title link when it would repeat it. Our scan below puts a number on how often that happens. Repeating words is a spam signal. Keyword stuffing in a title “doesn’t help users and can look spammy”, and anywhere on the page it violates Google’s spam policies . What we found. We fetched the 79 organic results on Google’s first page for ten SEO and marketing queries, from on-page SEO to keyword research to content marketing (the full list is under the chart), compared each page’s title element with the title Google showed in the result, and read the page’s H1. Of the 70 pages where the comparison was clean: Google showed the title element unchanged for 44% . It dropped or moved the site name and left the rest alone for 43% . It rewrote the wording for 13% . When the H1 matched the title element, Google kept the title in 11 of 12 cases. When the title ran past 60 characters, Google changed it in 12 of 15 cases, nearly always by cutting the site name. The rewrites are the useful part. In three of the four clearest cases, the title Google showed was the page’s own H1, word for word. Ahrefs titled its keyword research guide “Keyword Research: The Beginner’s Guide by Ahrefs” and Google showed the H1, “How to Do Keyword Research for SEO (Start to Finish)”. WP Engine’s “Using Google Docs with WordPress | WP Engine” became its H1, “How to Integrate Google Docs with WordPress”. Semrush’s “What Are Meta Tags? How to Use Them for Google SEO” became its H1, “Meta Tags: What They Are & How to Use Them for SEO”. So the practical rule is simpler than the character-counting advice: write one title, use it as both the title element and the H1, put the words people search for at the start, and let Google handle the brand. 2. The meta description The meta description does not affect rankings. It affects whether people click, because Google may use it as the snippet under the title link. Google’s snippet documentation says snippets are “primarily created from the page content itself” and the description tag is used when it gives “a more accurate description of the page than would be possible purely from the on-page content”. When it does not, Google writes its own snippet from the page text, which is how a page with no description ends up with a snippet made of navigation links. Google’s guidance, in order of importance: make each description unique; summarize the whole page rather than one anecdote from it; be specific (a single product name is too short); include details such as author, date or price when they matter; and do not write a list of keywords, which is “less likely to be displayed”. Large sites can generate descriptions programmatically provided they are “human-readable and diverse”. There is no length limit here either; the snippet is truncated to fit the device. In our scan, 6 of 73 page-one results had no meta description at all (Wikipedia pages, a protocol spec, a free tool page), and 13 had descriptions over 160 characters. Neither stopped them ranking, which is the point: the description is for the click, not the rank. 3. The URL Google’s URL structure guidance is specific: “use readable words rather than long ID numbers”, separate words with hyphens rather than underscores (“use hyphens instead of underscores”), keep the structure simple, and remove parameters that do not change the content. Google treats /Apple and /apple as different URLs, so pick one case and stick to it. Keep slugs short, leave out dates unless the page is about that date, and never let tracking parameters or session IDs become the URL people link to. One page, one URL: if the same content answers at two addresses, pick one and canonicalize the other (element 9). Changing a URL after publishing costs more than it gains. The words in the slug are a minor signal, and every change needs a redirect and loses some of the links pointing at the old address. If you publish through a CMS, set the slug before the page goes live; Workover’s WordPress sync sends the slug with the post so it is not generated from a working title. 4. The H1 and the headings Give the page one clear main heading that matches the title element, and make it, in Google’s words, “the most prominent text on the page”, usually by putting it in the first visible <h1> . When a page has several large headings styled the same way, Google says it may use the first one as the title. In our scan, 9 of 73 page-one pages had more than one H1 and 3 had none. All of them rank, so one H1 is not a ranking requirement. It is a way of making sure Google picks the heading you meant. Below the H1, headings exist for people. Google’s SEO starter guide says heading order does not matter for Search (“it doesn’t matter if you’re using them out of order”), so H2 and H3 are for readers and for the AI systems that extract one section at a time. Write each heading as the question or statement the section answers, and answer it in the first sentence underneath. A heading that says “Step 3” tells nobody anything. 5. The content Everything else on this list describes the content. The content itself is what gets ranked, and Google’s documentation on creating helpful content describes what it wants in three words: “helpful, reliable, people-first”. In practice: Match the intent. Look at what ranks for the query and give that kind of page. For “best cms” the first page is listicles and a Reddit thread; for “xml sitemap” it is Google’s own documentation and a generator. A beautiful essay does not rank for a query where everyone wants a tool. Answer early. State the main point in the first paragraph and under each heading. Readers, featured snippets and AI overviews all take the first clear answer they find. Google’s featured snippet documentation says there is no way to mark a page as a snippet; the system picks pages that answer the query directly. Add something. Original data, a tested procedure, a correction of a common mistake. The scan in this guide exists for that reason. Google’s helpful content questions ask whether the page “provides original information, reporting, research, or analysis”. Show who wrote it and why they know. Google’s guidance on experience, expertise, authoritativeness and trust (E-E-A-T) describes what its quality raters look for; the starter guide also lists “E-E-A-T is a ranking factor” under misconceptions. It is a description of good content, not a score, so bylines, credentials and first-hand detail help because they make the content better, not because they tick a box. Use the searcher’s words, then write normally. The target phrase belongs in the title, the first paragraph and a heading or two. In the scan, 68% of page-one results had every word of the query in the title and 63% in the H1. Google does not use the keywords meta tag (“Google Search doesn’t use the keywords meta tag”) and treats repetition as spam. Keep it current. A page with “2024” in its title and 2024 advice in its body loses to the page that was updated. Google’s title documentation specifically lists obsolete years as a reason it rewrites titles. 6. Internal links Internal links tell search engines which pages matter and what they are about. Google’s link guidance has one rule about the text: “write good link text”, meaning words that describe the destination, not “click here” or the bare URL. Links must also be real links ( <a href> ), not buttons that navigate with JavaScript, or Google will not follow them. Link from new pages to the existing pages they relate to, then go back and link from existing pages to the new one, because a page nobody links to (an orphan page) is hard to find and ranks poorly. Links in the body carry more meaning than links in a footer or sidebar. For links to sites you do not control, check they are trustworthy, and add rel="nofollow" (or ugc or sponsored , which Google also recognizes) to links you cannot vouch for, including anything users post. 7. External links Linking out does not leak anything. Citing the source of a claim is how a page shows its work, which is why the Google rules in this guide link to the page they came from the first time they appear. Link to the primary source rather than to someone else’s summary of it, use descriptive anchor text, and check external links periodically, because the pages you cite move and die. In the scan, Google’s own documentation pages ranked on page one for three of the ten queries; the primary source is often the best page to link to. 8. Images Google’s image documentation asks for three things: descriptive alt text, which the starter guide calls “a short, but descriptive piece of text that explains the relationship between the image and your content”; descriptive file names (“my-new-black-kitten.jpg” rather than “IMG00023.JPG”); and placing images next to the text they illustrate, with a caption where it helps. Leave the alt attribute empty for purely decorative images. Compress images (WebP for photographs, SVG for logos and icons), and give them width and height attributes so the layout does not shift while they load, which is one of the Core Web Vitals (element 11). If you write in Google Docs and publish to WordPress, the images are the step that usually breaks: pasted images stay hosted on Google and can stop loading. Our guide to moving a Google Doc into WordPress without broken images covers the three ways to do it, and the difference between alt text and the image title is its own short article. 9. Canonical and indexability These two tags decide whether any of the above counts. The canonical link ( <link rel="canonical"> ) names the one URL that should be indexed when the same content is reachable at several. Google’s duplicate URL documentation explains that it is a hint, not a directive, and that Google may choose a different canonical if the signals disagree. It should point at the page itself unless the page is a deliberate duplicate. A canonical pointing at the wrong page, a staging host, or the HTTP version of an HTTPS site quietly hands the page’s ranking to the wrong address. In the scan, 4 of 73 page-one results had no canonical at all and one pointed at a different URL from the one that ranked. The robots meta tag ( <meta name="robots" content="noindex"> ) tells search engines not to index the page. It is right on thank-you pages and internal search results and catastrophic when a plugin or a template applies it to the whole site. 43 of the 73 scanned pages carried a robots meta tag, almost all of them harmless max-image-preview:large or index, follow declarations set by SEO plugins, which is a reminder that these tags are set by software, not by writers, and change when the software does. Google also notes that blocking a page in robots.txt “may not always prevent them from being indexed”; noindex is the tool for that. 10. Structured data Structured data, usually JSON-LD, describes the page in a vocabulary search engines agree on: this is an article, by this author, published on this date; this is a product at this price. Google’s structured data introduction says it is used “to understand the content of the page” and to enable rich results such as review stars, FAQs and recipe cards. It does not promise rankings, and Google’s AI features documentation says “there’s also no special schema.org structured data that you need to add” for AI Overviews, only that the structured data should match the visible text. Use the type that fits the page, fill in properties with the same facts that appear on the page, and test it with the Rich Results Test before and after publishing. A typical article looks like this: { "@context": "https://schema.org", "@type": "Article", "headline": "On-page SEO: what to check on every page", "author": { "@type": "Person", "name": "Alex Panagis" }, "datePublished": "2026-10-10", "dateModified": "2026-10-10", "image": "https://workover.io/images/on-page-seo-elements-diagram.png" } 11. Speed and Core Web Vitals Page experience is measured by the three Core Web Vitals : Largest Contentful Paint (how long the main content takes to appear; good is 2.5 seconds or less), Interaction to Next Paint (how quickly the page responds to a tap or click; 200 milliseconds or less), and Cumulative Layout Shift (how much the layout jumps while loading; 0.1 or less). Google measures them from real Chrome users and reports them in Search Console; PageSpeed Insights shows the same field data with a lab run underneath. Google’s page experience documentation is careful about what this means for rankings: Core Web Vitals are used by ranking systems, but “great page experience” does not override “great content”. For on-page work the practical items are the ones a writer controls: image sizes, image dimensions, embeds, and anything that loads above the content and pushes it down. 12. Rendering: what Google actually sees This is the element every guide on page one for this query leaves out. A growing share of pages set their title, meta description, canonical or whole sections with JavaScript after the HTML has loaded. Google’s JavaScript SEO documentation says it processes pages in three phases, crawling, rendering and indexing, that pages are queued for rendering and “may stay on this queue for a few seconds, but it can take longer than that”, and that “you can use JavaScript to set or change the meta description as well as the title element”. So JavaScript-set elements work, eventually, as long as Google can render the page. A crawler that only reads the HTML never sees them at all. We checked this on the same 73 pages, fetching each once as raw HTML and once in a real browser after JavaScript ran. For 7 of them the meta description differed between the two. For 4 the number of H1s changed: GeeksforGeeks went from one H1 in the HTML to five after rendering, Loops from three to one. And 4 pages, three of them Google’s own documentation, served a translated title to our crawler and English to the browser, because they chose the language from the request rather than the URL. So check the rendered page, not the source. Google’s own advice is to “use the Rich Results Test or the URL Inspection Tool and look at the rendered HTML”. A monitor that renders pages in a real browser and compares the result with the raw HTML on every check shows the difference as it happens. Workover Monitor does this (yes, that is us; we own up properly a little further down), and so do a few of the enterprise crawlers. 13. Open Graph and social previews Open Graph tags ( og:title , og:description , og:image ) control how the page appears when shared on LinkedIn, Slack, iMessage and most other places a link is pasted. They are defined by the Open Graph protocol , not by Google, but Google’s title documentation lists og:title among the sources it draws on when it rewrites a title, so an og:title that disagrees with the title element gives Google a second option. Set the three tags on every page, make the image 1200 by 630 pixels, and keep og:title identical to the title element unless you have a reason for the share preview to say something different. 14. Mobile and readability Google indexes the mobile version of a page, so whatever is hidden, collapsed or removed on small screens is what Google reads. Keep the main content visible on mobile, keep the headline and first paragraph above the fold, and do not hide text behind tabs or “read more” toggles that the snippet documentation warns against. Short paragraphs, lists where the content is a list, and a table where the content is a comparison are not SEO tricks; they are how people read on phones. The on-page SEO checklist Run this on any page in ten minutes. The numbers match the sections above. Title : unique on the site, describes the page, important words first, identical to the H1, brand at the end or not at all. Meta description : present, unique, summarizes the whole page, specific, not a keyword list. URL : short, made of words, hyphenated, lowercase, no dates or IDs, one URL per page. H1 and headings : exactly one H1 with the same meaning as the title; every section heading says what it answers, and the answer follows in the first sentence. Content : matches the intent of the query, answers in the first paragraph, adds something the other results lack, uses the searcher’s words without repeating them, carries a byline and a date. Internal links : at least three descriptive links out to related pages, and at least three pages linking in. External links : every claim that comes from somewhere links to the primary source; no dead links. Images : descriptive file names, alt text that describes the picture, compressed, with width and height set. Canonical and robots : canonical points at this URL; no accidental noindex; the page is not blocked in robots.txt. Structured data : valid markup for the page type; the Rich Results Test passes. Core Web Vitals : green in Search Console or PageSpeed Insights for the three vitals. Rendering : the title, description, canonical and H1 are the same in the rendered page as in the HTML. Open Graph : title, description and a 1200 by 630 image set. Mobile : the full content is visible on a phone, headline and first paragraph first. Pages do not stay optimized Every guide on the first page of results for this topic ends when the page is published. That is exactly when the trouble starts. A page that passes the checklist on Monday can fail it by Friday without anyone editing it. A theme update changes the heading template and the H1 becomes an H2. An SEO plugin update resets the title format and every title on the site gains “| Home”. A migration moves the site and the canonicals still point at the old host. A developer adds noindex to staging and the setting ships to production. None of these show up in the CMS. They show up in Search Console weeks later as a drop, and in the next audit months later as a list. There are three ways to catch this, from least to most useful: Re-run the checklist on a schedule. Quarterly for most pages, after every release for the pages that earn the traffic. Cheap, and better than nothing, but a quarter is a long time to rank with the wrong title. Watch Search Console. The Page indexing report shows pages that dropped out of the index and why; the Performance report shows clicks and impressions falling for a page. Both are lagging indicators: Google has to recrawl and re-rank before anything changes there. Monitor the pages continuously. A monitor re-checks each page on a cadence, compares every check with the last, and alerts you when a title, heading, meta description, canonical or robots directive changes, before Google has noticed. The third option is what Workover Monitor does. Now, as is self-evident from the site you are reading this on, Workover is our product, and you would expect us to tell you that the monitor is the answer. We do think that, as it happens. But that is not the point of this guide. The point is that the page you spent a day getting right still says what you wrote next quarter, and any of the three options above beats finding out from a traffic drop. For the record, Monitor checks titles, headings, meta descriptions, canonicals, indexability, thin content and internal links on every page it watches, renders each page in a real browser and compares the rendered DOM with the raw HTML, and bundles a template change that breaks a thousand pages into one alert rather than a thousand. The Workover editor handles the other end: titles, headings, links and image alt text are set while writing and pushed to WordPress or Webflow as written, so the page is right the day it is published, and a style guide can enforce the house rules (ours forbids em dashes, which is why this guide has none). How to measure on-page SEO Three free reports answer whether the work is paying off. Search Console , Performance. Filter to the page. Impressions rising means Google is showing it for more queries; clicks rising faster than impressions means the title and description are earning their place. Compare the 28 days after a change with the 28 days before. Search Console, Page indexing and URL inspection. Confirms the page is indexed, which canonical Google chose (it is not always yours), and what the rendered page looked like when Google fetched it. PageSpeed Insights and the Core Web Vitals report. Field data from real users for the three vitals, per URL group. Rank tracking is useful once a page is ranking, but for on-page work the Search Console numbers are closer to the cause. Tools for on-page SEO You do not need to buy anything to do everything in this guide. Free, from Google: Search Console (indexing, performance, Core Web Vitals, URL inspection with rendered HTML), PageSpeed Insights (vitals per page), the Rich Results Test (structured data and rendered HTML). A crawler, for the one-off audit of a whole site: Screaming Frog (free to 500 URLs) or Sitebulb. Both list every title, description, H1, canonical and robots directive on the site in one table, and both can render JavaScript. A monitor, for everything that changes after publishing: Workover Monitor, Conductor Monitoring or Lumar, depending on the size of the site and the budget. The editor you write in, if it can set titles, headings, links and alt text and send them to the CMS intact. That is the point of Workover , and the reason this guide spends so much time on the difference between what you wrote and what the page ends up saying. Frequently asked questions What does “on-page” mean in SEO? On-page (sometimes written OnPage) means the elements on the web page itself, as opposed to off-page factors such as links from other sites. On-page SEO is the work of getting those elements right: title, meta description, URL, headings, content, links, images, canonical, structured data, speed, rendering and social tags. How do you check a page’s on-page SEO? Open the page, view the source (or better, the rendered HTML in Search Console’s URL inspection tool), and run the 14-point checklist above. For a whole site, a crawler produces the same checks for every page in one table; for a site that changes often, a monitor re-runs them continuously. What is the 80/20 rule in SEO? A rule of thumb, not a Google rule: a small share of the work produces most of the result. For on-page SEO the 20% is the title, the H1, the first paragraph and the internal links, applied to the pages that already get impressions in Search Console. Our scan supports the emphasis on the title and H1: when they matched, Google used the title as written in 11 of 12 cases. Does on-page SEO still matter now that Google shows AI Overviews? Google says yes, in so many words. Its AI features documentation states there are “no additional requirements to appear in AI Overviews or AI Mode, nor other special optimizations necessary”, and that “the best practices for SEO remain relevant for AI features in Google Search”. Pages that state things clearly, section by section, with a visible source, are the ones those features quote. What is an SEO landing page? A page built to rank for one query and convert the visitor who arrives from it: one topic, one title, one clear answer, and one action to take. The checklist applies to it exactly as it does to a blog post, with more weight on the title, the first paragraph and the speed. How often should on-page SEO be checked? Before publishing, after every change to the site’s theme, plugins or templates, and continuously on the pages that earn the traffic, because those are the ones a silent regression costs the most.

Alex PanagisOct 10, 2026
Google Docs

How to do a hanging indent on Google Docs

A hanging indent is paragraph formatting where the first line sits flush with the left margin and every line after it is indented. It is the usual layout for bibliographies, works-cited pages and reference lists, because the first word of each entry stands out and the list is easier to scan, as in the example below. This guide shows how to create a hanging indent in Google Docs in a desktop browser, how to adjust it, and how to make it part of a paragraph style. It does not cover Microsoft Word or the Google Docs mobile apps. Before you start: you need edit access to the document. How to create a hanging indent in Google Docs Click anywhere in the paragraph you want to format. To format several paragraphs at once, for example a whole reference list, select them all first. Open the Format menu and point to Align & indent . In the submenu, click Indentation options . In the Indentation options dialog, open the Special indent dropdown and select Hanging . In the box next to the dropdown, you can change how far the second and later lines are indented, for example 0.5 . The dialog shows the unit it uses under Indentation , such as inches. Click Apply . The first line of each selected paragraph stays at the left margin and the remaining lines move in by the amount you entered. Adjusting the indent To change the indent later, click in the paragraph and reopen Format > Align & indent > Indentation options . To make the hanging indent deeper or shallower, change the value in the box next to Hanging , then click Apply . Making a hanging indent part of a paragraph style If every paragraph of a certain style should carry the same hanging indent, save the indent into that style. The example below uses Normal text . Apply a hanging indent to one paragraph that uses the Normal text style, using the steps above, and leave your cursor in that paragraph. Open Format > Paragraph styles > Normal text . Click Update ‘Normal text’ to match . All text in this document that uses Normal text is updated to match, so it picks up the hanging indent. Text that uses other styles, such as headings, does not change. Note: to reuse your updated styles in other documents, open Format > Paragraph styles > Options and click Save as my default styles . In another document, the same Options menu has Use my default styles . If you only want the hanging indent on a reference list, and not on the body text, format the list’s paragraphs directly with the dialog instead of updating Normal text . Summary Create a hanging indent with Format > Align & indent > Indentation options > Special indent > Hanging , then Apply . Change the hanging depth with the value next to Hanging . Reuse the formatting by updating a paragraph style, and save it as your default to carry it into new documents.

Naman SinghalFeb 23, 2025
How to Move a Google Doc into WordPress Without Broken Images
Google Docs

How to Move a Google Doc into WordPress Without Broken Images

Google Docs is where a lot of content gets drafted, reviewed and approved. Getting that content into WordPress cleanly is harder than it looks, and images are where it usually goes wrong. The biggest problem is the one you cannot see. When you copy a Google Doc and paste it into the WordPress editor, the images look fine, but they are still hosted on Google’s servers, not in your WordPress media library. Warning: images pasted from a Google Doc point at Google’s image cache ( googleusercontent.com ) rather than at files on your site. Those links are not files you own and they can stop working, and when they do, the images in your post break. Whichever method you use, make sure every image ends up in your WordPress media library. This guide covers three ways to import a Google Doc into WordPress: Method 1: paste the doc into Workover, which keeps the images, then push it to WordPress. Method 2: download the doc as a web page and rebuild it in the block editor. Method 3: use the Mammoth .docx converter plugin. Method 1: Paste into Workover, then push to WordPress Workover is a writing and publishing workspace that connects to your WordPress site. You paste the Google Doc into a Workover document, and Workover copies each pasted image into its own storage so the images no longer depend on Google. When you push the document to WordPress, the images are uploaded to your media library along with the post. Workover does not sync with Google Docs. Once the content is pasted in, you edit it in Workover, and changes you make later in the Google Doc are not carried across. Before you start: you need a Workover account, a project connected to your WordPress site, and a WordPress login that can approve the connection. If the site is not connected yet, follow Connecting your WordPress site to Workover , or use the short version in step 2. Sign in to Workover at workover.io/app/login , or create an account there. If your project is not connected to WordPress yet, open its Project settings . In the Connect to WordPress card, enter your site’s address, for example https://example.com , without /wp-admin/ appended, and click Connect . WordPress asks you to log in if you are not already, then shows its application authorization screen. Click Yes, I approve of this connection . In Google Docs, select the whole document ( Ctrl+A , or Cmd+A on a Mac) and copy it. Open a document in your Workover project and paste. The text and images appear straight away, and Workover copies the images into its own storage in the background. Review the content. To set an image’s file name or alt text, select the image and click Edit in its toolbar. See Images and media . Open the WP tab in the editor’s side panel and push the document to WordPress. The button follows the status you pick: Save draft to WordPress for a draft, Send for review , Publish or Save as private . See How to push a document to WordPress . To check the result, click the Open in WordPress icon in the same tab. If an image could not be copied, Workover shows a message after the paste, for example “One pasted image still links to its original source and may expire.” Re-insert that image from a file before you push. If you run into problems, email [email protected] . Method 2: Download the Google Doc as a web page This method gets your images out of Google as real files, but you rebuild the post by hand. Open the document in Google Docs. Click File > Download > Web Page (.html, zipped) . This downloads the document as a zip file. Extract the zip file to a folder. It contains the page as an HTML file, and the document’s images as separate image files. Open the HTML file in a text editor and copy everything between the <body> tags. In WordPress, go to Posts > Add Post . Switch the editor to the Code editor and paste the copied HTML. Switch back to the visual editor. Because the pasted HTML has no block markup, WordPress shows it as a single Classic block. Select that block and click Convert to blocks in its toolbar, so each image becomes its own Image block. Rename the extracted image files to descriptive file names if you want to. For each image, select the Image block, click Replace , choose Upload , and pick the matching file from the extracted folder. This uploads it to your media library and replaces the link to Google. Add alt text to each image, then set categories, tags and any other post settings. Preview the post, then publish or save it. This takes more steps than the other methods, but you control every block of the result. Method 3: Use the Mammoth .docx converter plugin The Mammoth .docx converter plugin converts a .docx file into editor content, and uploads the document’s images to your media library when it inserts them. In WordPress, go to Plugins > Add Plugin , search for “Mammoth .docx converter”, click Install Now , then Activate . In Google Docs, click File > Download > Microsoft Word (.docx) . In WordPress, go to Posts > Add Post and give the post a title. In the post editor, find the Mammoth .docx converter box and use its file field to select the .docx file. Click Insert into editor . Review the converted content and fix any formatting problems. Publish or save the post. Mammoth’s own documentation says the conversion is unlikely to be perfect for more complicated documents, and that it works best when the document uses styles such as headings, so budget time for cleanup. Which method to choose Method Images end up in your media library Effort Paste into Workover, then push Yes, uploaded on push Low, after a one-time site connection Download as web page Yes, when you replace each image High, manual rebuild Mammoth .docx converter Yes, uploaded when you insert Medium, cleanup needed Copy and paste into WordPress No, images stay on Google’s servers Low, but images can break later Related Connecting your WordPress site to Workover How to push a document to WordPress Images and media

Justin ArnoldJan 21, 2025
How to Edit a PDF in Google Drive Using Google Docs
Google Docs

How to Edit a PDF in Google Drive Using Google Docs

Need to make a quick edit to a PDF without installing anything? Google Drive can open a PDF in Google Docs, which turns it into an editable Google Doc. You make your changes there and download the result as a new PDF. This is a conversion, not true PDF editing: Google Drive converts the PDF to text in a Google Doc. It works best on simple, text-based files. This guide does not cover annotating or signing PDFs. Warning: before you start, check that your PDF suits conversion. Google recommends files of 2 MB or smaller. Bold, italics, font size, font type and line breaks are likely to be retained, but lists, tables, columns, footnotes and endnotes are not likely to be detected. Before you start: you need a Google account and the PDF on your computer or already in Google Drive. Step 1: Upload your PDF to Google Drive Go to drive.google.com . If the PDF is already in Drive, find it and skip to step 2. Otherwise, drag the file from your computer into the Drive window, or click New > File Upload and choose it. Step 2: Open the PDF with Google Docs Right-click the PDF in Drive. Point to Open with and click Google Docs . Drive converts the file and opens the result in Google Docs as a Google Doc. The PDF itself is not edited; it stays in Drive as it was. Step 3: Edit the document Edit the text as you would any Google Doc. While you are online, Google Docs saves your changes automatically as you type. Check the layout carefully against the original, especially anywhere the PDF had lists, tables or columns. Step 4: Download your edited PDF In Google Docs, click File > Download > PDF Document (.pdf) . Save the file. This is a new PDF; the original in Drive is still the unedited version. If you no longer need them, you can delete the converted Google Doc, or the original PDF, from Drive afterwards. Summary Open with > Google Docs creates an editable copy; it does not change the PDF. Keep to simple PDFs of 2 MB or less, and check lists, tables and columns after conversion. Download the edited version with File > Download > PDF Document (.pdf) .

Alex PanagisAug 1, 2024
Image Alt Text vs Image Title in WordPress – What’s the Difference?
WordPress

Image Alt Text vs Image Title in WordPress – What’s the Difference?

If you maintain a WordPress site, you have met alt text . You may also have noticed image titles , and wondered how the two differ. Are they the same thing? Do they both help accessibility? Do you need both? This post explains what each one is, what it does for readers and for search, and where WordPress keeps them, which is less obvious than it looks. For step-by-step instructions on adding alt text, see How to add alt text to images in WordPress . What is image alt text? Alt text, short for “alternative text”, is a text description of an image, written into the HTML alt attribute: <img src="fluffy-cat.jpg" alt="A fluffy orange cat sitting on a tree branch on a sunny day"> Alt text and accessibility Alt text is how an image reaches people who cannot see it. Screen readers read the alt text out in place of the image, so a good description tells listeners what the image shows and why it is there. When a browser does not display an image, for example because the file is broken or the reader has turned images off, it may show the alt text in its place. Alt text and SEO Google uses alt text, along with computer vision and the contents of the page, to understand what an image shows. Its guidance recommends descriptive alt text, such as “Dalmatian puppy playing fetch” rather than just “puppy”. Writing good alt text Be descriptive but concise. “A fluffy orange cat sitting on a sunny tree branch” says more than “cat”. Avoid keyword stuffing. “cat, fluffy cat, orange cat, cat on tree” helps nobody, and Google warns that keyword stuffing may cause your site to be seen as spam. Include text that appears in the image , such as a quote or a chart label. Fit the context. On a pet-care page, “A fluffy orange cat resting on a branch after grooming” may be more useful than a generic description. Use plain language. “A fluffy orange cat” beats “a member of the Felidae family with luxuriant orange fur”. What is an image title? The image title is the HTML title attribute on an image. It holds extra, optional information, and desktop browsers typically show it as a tooltip when you hover the mouse over the image: <img src="fluffy-cat.jpg" alt="A fluffy orange cat sitting on a sunny tree branch" title="Adoptable cats at our shelter"> Here, the title “Adoptable cats at our shelter” adds context beyond what the image shows. Limits of the title attribute MDN describes the title attribute as highly problematic for people using touch-only devices, keyboards or screen readers, because browser and assistive-technology support is inconsistent. Never put information that a reader needs only in the title. When a title can help A title can add a helpful hint for mouse users on images such as diagrams, infographics or product photos, for example “Available in three colors”. Treat it as a bonus, never as a substitute for alt text. Key differences Alt text Image title HTML attribute alt title Purpose Describes the image for accessibility and search Adds optional extra context Where it appears Read by screen readers; may be shown if the image is not displayed Tooltip on mouse hover, in most desktop browsers Search Google uses it to understand the image Not mentioned in Google’s image guidance Accessibility Essential Unreliable; not a substitute for alt text Where WordPress keeps alt text and titles This is where the two are easiest to confuse, because WordPress has a field called Title that does not set the title attribute. Media Library “Alternative Text” : the alt text stored with the image file. When you insert the image into a post, the block editor copies this alt text into the Image block. Media Library “Title” : the name of the media item in your library. It is not copied into the post as the image’s title attribute. Image block “Alternative text” : the alt text used for that image in that post. Set it in the block’s settings. Image block “Title attribute” : the actual HTML title attribute. It is under Advanced in the Image block’s settings. For the steps, see How to add alt text to images in WordPress . Alt text in Workover If you write in Workover and publish to WordPress, you can set alt text before the post goes out: select an image in the editor, click Edit in its toolbar, and fill in Alt text in the Edit image dialog. When you push the document, the alt text goes out with the image, and it is saved on the image’s WordPress media library entry when the image is first uploaded. The dialog also sets the image’s File name ; it has no title field. See Images and media . Final thoughts Alt text and image titles do different jobs. Alt text is essential: it makes images accessible and helps search engines understand them. The title attribute is an optional hover hint that many readers never see, and in WordPress it is set in the Image block’s Advanced settings, not by the Media Library Title field.

Alex PanagisAug 1, 2024
How to Flip or Mirror an Image in Google Docs
Google Docs

How to Flip or Mirror an Image in Google Docs

You can flip or mirror an image in Google Docs by placing it in a drawing. This guide shows how, both for a new image and for one that is already in your document. Before you start: use Google Docs on a computer. Google’s help describes creating drawings only on a computer; for the Android and iPhone apps it covers markups instead. Note: the flipped result is a drawing that contains your image, not a plain image. Check how it looks if you later download the document in another format. Step 1: Open your document Go to docs.google.com and open the document you want the flipped image in, or create a new one. Step 2: Insert a new drawing Click Insert > Drawing > New . Step 3: Add the image to the drawing Click the image button in the drawing toolbar. If the image you want to flip is already in your document, insert it again here from the same source you used the first time. Then choose where the image comes from: upload it from your computer, or pick it from another source such as Google Drive. Step 4: Flip the image With the image selected on the drawing canvas, click Actions > Rotate and choose one of: Flip horizontally : mirrors the image left to right. This is the most common choice. Flip vertically : turns the image upside down as a mirror image. Rotate clockwise 90° or Rotate counter-clockwise 90° : turns the image without mirroring it. Step 5: Save and close the drawing When the image looks right, click Save and close . The flipped image is inserted into your document. If you were flipping an image that was already in the document, delete the original, unflipped image. That’s it: your image is flipped.

Alex PanagisJul 16, 2024
How to Add Alt Text to Images in WordPress
WordPress

How to Add Alt Text to Images in WordPress

Alt text, often called “alt tags”, is the text description attached to an image. Screen readers read it aloud, browsers may show it when an image is not displayed, and Google uses it to understand what an image shows. It is also widely neglected: the WebAIM Million 2026 report found missing image alt text on 53.1% of the top one million home pages. This guide shows three ways to add alt text to images in WordPress, and how to set it in Workover before you publish. What is alt text? Alt text is the value of an image’s HTML alt attribute: <img src="image.jpg" alt="image description"> It serves two audiences: People. Visually impaired readers using screen readers hear the alt text in place of the image. Text alternatives for images are required by success criterion 1.1.1 of the Web Content Accessibility Guidelines (WCAG). Search engines. Google uses alt text, along with computer vision and the contents of the page, to understand what an image shows. If an image fails to load, the browser may show its alt text instead, so readers still know what should be there: For how alt text differs from the image title, see Image alt text vs image title in WordPress . Method 1: Add alt text to an image in a post Use this for images already in a post or page. The alt text you set here applies to this image in this post only. Open the post in the WordPress block editor. Click the image to select its Image block. In the Settings sidebar, on the Block tab, enter your description in the Alternative text field. Repeat for any other images in the post. Save the post. On a post that is already published, the button is Save . Method 2: Add alt text in the Media Library Use this to set alt text on an image file itself, either as you upload it or later. In your WordPress dashboard, go to Media > Library . To upload a new image, click Add Media File at the top of the library, then click Select Files and choose the image. Click the image in the library grid to open Attachment details . Enter your description in the Alternative Text field. Click outside the field. WordPress saves the change automatically and shows Saved. When you next insert this image into a post, the block editor fills in its alt text from the library. Warning: the library’s alt text is copied into a post only when you insert the image. Changing it in the Media Library later does not update images already in your posts. To fix those, edit each post as in Method 1. The Title field in Attachment details names the file in your Media Library. It does not add a title attribute to the image in your posts. Method 3: Edit the image HTML If you prefer to work in HTML, you can edit a single block’s markup: Open the post in the block editor and select the image. In the block toolbar, click Options (the three dots) and choose Edit as HTML . Find the alt="" attribute and type your description between the quotes. Save the post. Adding alt text in Workover If you write in Workover and publish to WordPress, you can set alt text before the post goes live: In the Workover editor, select the image. Click Edit in the image toolbar. The Edit image dialog opens. Enter your description in Alt text . You can also change the image’s File name , which becomes its name in WordPress. Click Save . When you push the document to WordPress, the alt text goes out with the image, and Workover uploads the image to your media library with that alt text the first time it pushes it to your site. This includes images you pasted in from a Google Doc: Workover copies them into its own storage when you paste them, and shows a message if one could not be copied. See Images and media and How to push a document to WordPress . Best practices for writing alt text Be descriptive. Say what the image shows or why it is there. “A man walking a dog in the park” beats “man” or “dog”. Be concise. Typically only a few words are necessary, though a short sentence is sometimes appropriate. Use keywords sparingly. Include a keyword only where it fits the description naturally. Don’t start with “Image of” or “Picture of”. Screen readers already announce that it is a graphic. Examples Good: “Golden retriever playing fetch in a sunny park”. It is specific and clear. Bad: “Dog”. It is too vague to be useful. Worse: “Dog, dog food, dog toys, cheap dog toys, popular dog toys”. It is keyword stuffing that helps no reader, and Google warns it may cause your site to be seen as spam. Conclusion Alt text makes your images accessible to people using screen readers and helps search engines understand them. In WordPress, set it per image in the block editor, or on the file in the Media Library before you insert it. Once it is part of your routine, it takes seconds per image.

Alex PanagisJun 21, 2024
WordPress

Webflow vs. WordPress – Which Is Better & Why?

WordPress and Webflow are two popular platforms for building websites, with different strengths and trade-offs. This article compares them for four common use cases: a business site, an ecommerce store, a portfolio and a blog, and gives some pointers for choosing between them. What is WordPress? WordPress is an open-source content management system (CMS) for building and managing websites with themes, plugins and an admin dashboard. According to WordPress.org, WordPress powers over 40% of the web . Benefits of WordPress: The software is free, and many hosts install it for you. A large community of developers and users provides support, tutorials and resources. Thousands of themes and plugins let you customize the appearance and functionality of your site. It is flexible enough to build almost any type of website. Plugins connect it to a wide range of tools and services. If you are unhappy with your host, you can move your site to another one. Drawbacks of WordPress: It can be vulnerable to security issues if WordPress core, themes and plugins are not kept up to date. Themes, plugins and WordPress versions can conflict with each other. Customizing beyond the basics has a learning curve for beginners. Support quality, reliability and site speed depend on the hosting company you choose. What is Webflow? Webflow is a cloud-based website platform for designing and managing websites visually. Its visual designer generates the HTML, CSS and JavaScript for you, and your site’s hosting and CMS are included in Webflow’s site plans. Benefits of Webflow: Designers and non-coders can work visually. It gives you detailed control over design and layout. It has a built-in CMS for adding and editing content. Hosting is included, so there are no servers or software updates to manage. Drawbacks of Webflow: The free Starter plan is meant for exploring and experimenting: it has a webflow.io domain, 2 static pages and a limited CMS. A real site needs a paid plan (see pricing below). It is a proprietary, hosted platform: your site’s CMS and hosting run on Webflow. In our view, developers who want to work directly with the code or add custom features face a steeper learning curve than on WordPress. Pricing at a glance Prices change, so check webflow.com/pricing before you decide. The figures below are Webflow’s published prices in US dollars, per site, per month, as of September 2026, before applicable taxes. Plan Billed yearly Billed monthly Notes Webflow Starter Free Free webflow.io domain, 2 static pages, limited CMS Webflow Basic $15/mo $25/mo Custom domain, no CMS Webflow Premium $25/mo $39/mo Custom domain and CMS Webflow Ecommerce Standard $29/mo $42/mo Plus a 2% transaction fee Webflow Ecommerce Plus $74/mo $84/mo 0% transaction fee Webflow Ecommerce Advanced $212/mo $235/mo 0% transaction fee WordPress Free software Free software You pay for hosting and a domain, and for any premium themes or plugins; costs vary by host WordPress vs Webflow for business sites A business site represents your brand, products or services online. It needs a professional design, clear navigation, engaging content and strong calls to action, and it should be fast, secure and easy for search engines to crawl. WordPress for business sites WordPress offers a lot of flexibility and customization . You can choose from thousands of free themes , buy a premium theme from a theme developer, or create your own theme . Plugins add features such as contact forms, social media integration and analytics, and SEO plugins help you optimize the site for search. To customize beyond the basic options, you may need a developer or some coding skills. Webflow for business sites Webflow offers a lot of control over design and layout. You can design from scratch in the visual editor or start from a template, and add elements and interactions with the Webflow CMS or custom code. If you need a feature or integration Webflow does not support, you may hit limits. WordPress vs Webflow for ecommerce stores An online store needs a user-friendly design, secure payments, inventory management, shipping and tax handling, customer support, and the capacity to handle traffic and sales. WordPress for ecommerce stores The free WooCommerce plugin turns a WordPress site into an online store, with products, categories, coupons, reviews, cart and checkout. Extensions add payment gateways, shipping methods, marketing tools and more. Webflow for ecommerce stores Webflow launched Webflow Ecommerce in beta in November 2018. It lets you add products, collections, variants, discounts, cart and checkout, and design the store in the visual editor or with custom code. Payments are powered by Stripe, with Apple Pay, Google Pay and PayPal. You can set shipping regions and rules, and Webflow calculates sales tax and VAT automatically for customers in the United States, Canada, the European Union and Australia. Ecommerce requires one of Webflow’s ecommerce plans, which cost more than its standard site plans. If you sell elsewhere, check how you will handle tax before you commit. WordPress vs Webflow for portfolios A portfolio site should be responsive, fast and easy to find in search, to impress potential clients or employers. WordPress for portfolios WordPress has many themes and plugins for showing your work, such as galleries, sliders, testimonials and contact forms. You need to find a hosting provider, register a domain and install WordPress, then keep core, themes and plugins updated. If you do not want to maintain the site yourself, you may need to hire a developer. Webflow for portfolios Webflow gives you full control over design and layout , from scratch or from a template, with the Webflow CMS and interactions. Because hosting is included, there is no separate hosting to buy and no server to update. WordPress vs Webflow for blogs A blog should be fast, secure and easy to find in search, to attract and keep readers. WordPress for blogs WordPress started in 2003 as a personal publishing system , and posts, categories, tags and comments are built in. Themes, plugins and SEO plugins let you customize the blog and optimize it for search. Webflow for blogs Webflow’s built-in CMS handles blog posts, and you design the blog’s layout in the visual editor or with custom code. How to choose between WordPress and Webflow There is no single right answer; it depends on your goals, budget and skills. As a rule of thumb: If you want free, flexible software with thousands of themes and plugins, and you are happy to manage hosting, WordPress is a strong choice. If you want to design visually without code and have hosting handled for you, Webflow is a strong choice. For a feature-rich ecommerce store with a large extension ecosystem, consider WordPress with WooCommerce. For a smaller store where design control matters most, consider Webflow Ecommerce. For portfolios and blogs , both platforms are well equipped. Using Workover with either platform Workover is a writing and publishing workspace that works with both. You write and edit in Workover, then: WordPress: push a document to your site as a post or page, and pull edits made in WordPress back. See How WordPress sync works . Webflow: connect a Webflow site to a project, and sync its CMS collection items both ways. See How to connect Webflow and publish to it . Conclusion WordPress and Webflow are both capable platforms, each with its own strengths and pitfalls. Your choice should depend on your specific needs and preferences. If you want versatility, a vast range of plugins and themes, and the freedom of open-source software, WordPress may be the better fit. If you prefer a visual design experience without coding, with hosting included, Webflow is a strong contender. For ecommerce, WooCommerce on WordPress offers extensive capabilities, while Webflow provides a more streamlined, integrated approach. For portfolios and blogs, both platforms serve you well. As you decide, consider your site’s scale, your budget and your long-term plans. It can also help to try both platforms, or to talk to a web development expert about your project.

Alex PanagisApr 3, 2024
Uncategorized

How to export email addresses from WordPress comments

Warning: a comment is not permission to send marketing email. The standard WordPress comment form asks for a name, email address and website, and offers to save them in the browser, but it collects no consent to receive newsletters. In the UK, PECR does not allow marketing email to individuals unless they have specifically consented, apart from a narrow exception for existing customers. In the US, CAN-SPAM requires every marketing email to explain clearly how to opt out. Other countries, including those in the EU, have their own rules. Only add commenters to a mailing list if they explicitly opted in, for example with a newsletter checkbox on your comment form, and keep a record of that consent. This is not legal advice: check the rules that apply to you before you send anything. WordPress stores the email address of everyone who leaves a comment. Exporting those addresses is useful for replying to readers, running a survey among people who agreed to be contacted, or moving commenters who opted in to your email tool. This guide shows four ways to export them: with a plugin, with WP-CLI, with an SQL query in phpMyAdmin, and with the built-in WordPress export. Before you start: you need an Administrator account on the site. For the manual methods you also need access to the site’s database (phpMyAdmin, usually through your hosting control panel) or to WP-CLI on the server. Choose a method Method Output Best for Comments Import & Export plugin CSV file Non-technical users who want a spreadsheet WP All Export Pro (paid) CSV or XML file Custom columns and filters WP-CLI List in the terminal, which you can save to a file Developers with server access phpMyAdmin (SQL) Query results you can copy or export Anyone with database access and no plugins Tools > Export WordPress XML (WXR) file A full backup, not an email list Export with the Comments Import & Export plugin Comments Import & Export by WebToffee exports comments to a CSV file. In WordPress, go to Plugins > Add Plugin , search for “Comments Import & Export”, then install and activate it. Go to Comments > Comments Im-Ex . The export form is under Export Comments in CSV Format . Set the export options: Limit : the number of comments to export. Leave it empty for no limit. Date : a date range, from From date to To date . Leave it empty to export comments from any date. Articles : the posts whose comments you want. Leave it empty to include all posts. Delimiter : the character that separates columns in the CSV file. The default is a comma. Columns : tick the columns to include. For an email list you need at least comment_author_email . comment_author , comment_post_title and comment_date add useful context. Click Export Comments . The plugin downloads a CSV file of the selected comments. The export includes approved comments and comments still waiting for moderation, but not spam or trash. Remove the pending ones, and any duplicate addresses, before you use the list. Export with WP All Export Pro WP All Export by Soflyy exports WordPress data to CSV or XML, but exporting comments needs its paid Pro edition. If you choose Comments in the free plugin from wordpress.org, it shows “WP All Export Pro is Required to Export Comments.” Install and activate WP All Export Pro. Go to All Export > New Export . Leave Specific Post Type selected and choose Comments from the dropdown. The plugin shows how many comments are available to export. To export only some comments, for example approved ones, add a rule under Add Filtering Options . Click Customize Export File . Add the comment author’s email address to the export columns, along with any other columns you want. Continue through the remaining screens, click Confirm & Run Export , then download the file. Export with WP-CLI If you have shell access to the server and WP-CLI is installed, run this from the WordPress directory: wp comment list --status=approve --field=comment_author_email | sort -u > commenter-emails.txt This lists the email address of every approved comment, sort -u removes duplicates, and the result is saved to commenter-emails.txt . Comments with no email address, such as pingbacks, can leave a blank line at the top of the file. Delete it before you use the list. Export with phpMyAdmin Warning: you are working directly in your site’s database. The query below only reads data, but a mistyped query elsewhere can change or delete content. Back up the database first. Sign in to your hosting control panel and open phpMyAdmin . In the list on the left, click the database your WordPress site uses. Click the wp_comments table. Your table prefix may differ from wp_ if it was changed during installation, for example wpx_comments . Click the SQL tab at the top. Paste this query. If your prefix is not wp_ , change wp_comments to match. SELECT DISTINCT comment_author_email FROM wp_comments WHERE comment_author_email <> '' AND comment_approved = '1' AND comment_type IN ('comment', ''); The comment_author_email column is never NULL in WordPress (an empty address is stored as an empty string), so the query filters on <> '' . It also keeps only approved comments, which leaves out spam, trash and comments waiting for moderation, and it leaves out pingbacks and trackbacks. Click Go . Below the results, under Query results operations , choose how to get the addresses out: Copy to clipboard , then paste into a spreadsheet or text file. Export , which opens an export page where you choose a format, such as CSV, and download the file. Print , to print the results from your browser. The built-in WordPress export Tools > Export creates a WordPress XML (WXR) file of your content, and comments in that file include the commenter’s email address. It is not a CSV file and is not meant for mailing lists, so use one of the methods above if you want a clean list of addresses. Keep the list safe An exported list of email addresses is personal data. Store it somewhere access-controlled, share it only with people who need it, and delete working copies (CSV files in your downloads folder, clipboard pastes) once you have imported the addresses where they belong. Next steps Import only the addresses of commenters who opted in into your email tool, such as Mailchimp, Constant Contact or Brevo (formerly Sendinblue). Once they are in, you can group readers, for example by the topics of the posts they commented on, and send each group related content. If you want more commenters to join your list, add an explicit, unticked newsletter checkbox to your comment form, so the consent is recorded at the moment the address is collected.

Alex PanagisApr 3, 2024