Manually creating Pinterest pins eats your time. Every new blog post means opening Canva, dragging an image, writing a hook, scheduling at the right time, and repeating it next week. For food bloggers who live and die by Pinterest traffic, the loop never ends.
Pin Magic collapses the whole workflow into one click. Pick a blog post, choose a template, and Pin Magic writes the pin title, builds the image right inside WordPress, and schedules it to publish at the times your audience is online.
Key features
- One-click pin creation — turn any blog post into a Pinterest-ready pin without leaving WordPress.
- 15 templates designed for food photography (the pin builder renders all 15; if your browser cannot run the designer, pins fall back to a server-rendered version that covers five of them) — including Statement, Classic Dark, Magazine Cover, Cookbook, Placecard, Recipe Card, Bold Banner, and Earthy Kitchen.
- Color customization — match pin accents to your brand without touching CSS.
- Per-pin image override — use your post’s featured image or swap in any image from your media library.
- Schedule and auto-publish — Pin Magic spreads pins across the days and times that work best for your audience and publishes them via Pinterest’s official API.
What’s free and what’s Pro
Everything the plugin does on your site is unlimited and free — all 15 templates, colour and branding controls, custom image uploads, per-pin image overrides, scheduling, publishing to Pinterest, and the analytics dashboard. No feature is locked, metered, or reserved for a paid plan.
One thing is not done on your site: writing the pin copy. That runs on Pin Magic’s own servers, which send your post details to Google’s Gemini model and return a suggested title and description. Because it costs us money per request, it carries a monthly allowance of 20 pin titles. You can always write or edit pin copy yourself, with no limit. Pro — available separately from pinmagic.tech — removes that allowance entirely and adds priority support.
Privacy and transparency
Pin Magic is honest about what leaves your site. When you create a pin title, Pin Magic sends the post title — plus the featured image’s alt text, the titles of pins you already made for that post, and recipe details if you use a recipe plugin — to its pin-copy service (a Cloudflare Worker that proxies to Google’s Gemini API). When you publish a pin, the image, title, and description go to Pinterest via Pinterest’s official API after you authorize the connection with one click — no API keys to manage on your end. Pin Magic adds no tracking pixels and no cross-site tracking. See the External services and Privacy sections below for the full breakdown.
Bundled third-party libraries
These open-source libraries ship inside the plugin as minified files so nothing is ever loaded from a remote server. Each is the current release of its line, carries its upstream licence file in the plugin, and its full unminified source is available at the link below.
- FullCalendar 6.1.21 (MIT) — calendar grid on the Pin Calendar screen. Source: https://github.com/fullcalendar/fullcalendar — licence: assets/vendor/fullcalendar/LICENSE.txt
- flatpickr 4.6.13 (MIT) — date and time picker used when scheduling pins. Source: https://github.com/flatpickr/flatpickr — licence: assets/vendor/flatpickr/LICENSE.txt
- html2canvas 1.4.1 (MIT) — renders a pin design to an image in your browser, so pin images are produced on your own machine rather than on a server. Source: https://github.com/niklasvh/html2canvas — licence: assets/vendor/html2canvas/LICENSE.txt
- Action Scheduler 3.9.3 (GPLv3) — runs scheduled pin publishing in the background. Source: https://github.com/woocommerce/action-scheduler — licence: vendor/action-scheduler/license.txt
- Google Fonts (SIL Open Font License 1.1) — Caveat, Cormorant Garamond, Courier Prime, DM Serif Display, Inter, Lora, Montserrat, Oswald, Playfair Display, Space Grotesk and Spectral, used by the pin templates. Only the subsets the templates need are bundled, so rendering a pin never requests a font from a remote server. Source: https://github.com/google/fonts — licence and per-family copyright: assets/fonts/google/OFL.txt
- Poppins (SIL Open Font License 1.1) — used by the server-side pin renderer. Source: https://github.com/itfoundry/Poppins — licence: assets/fonts/OFL.txt
Bundled photography
The example food photographs in assets/images/preview-samples/ exist only to show what each pin template looks like, on the Templates screen and in the pin builder. They are not used in any pin you publish — your pins use your own images.
Each one is either the plugin author’s own photograph or was obtained from a royalty-free stock library whose terms permit redistribution. All of them are redistributed as part of this plugin under its GPLv3 licence. They are served from inside the plugin and are never fetched from a remote host.
External services
Pin Magic relies on the following third-party/external services. Each sends data only as described below. Most are contacted only when you use the corresponding feature. The exceptions, listed in full: once a day the plugin fetches its plan configuration (no identifying data — activating the plugin itself contacts nothing); the dashboard checks the service’s status page when you open it (no identifying data); and while the pin wizard is open it asks how much of your monthly pin-copy allowance is left, which does send the two identifiers described below.
Two identifiers are used. The site identifier is a SHA-256 hash of your site URL plus admin email — non-reversible, and neither value is ever transmitted. The install identifier is a random UUID generated on first run and stored in your database; it identifies this installation to the service so one site’s cached results and allowance are kept separate from another’s. It contains no information about you or your site, and both are deleted when you delete the plugin.
Pin Magic API (api.pinmagic.tech)
This is Pin Magic’s own service, hosted on Cloudflare Workers. It performs the following functions, none of which can be done locally inside the plugin:
- Pin copy creation. When you create a pin title or description, the plugin sends the post title, recipe data if a recipe plugin is present, the alt text of the featured image, the titles of pins you have already made for that post (so new copy does not repeat them), the site and install identifiers, and your current plan (“free” or “pro”). The service uses Google’s Gemini language-model API to compose the text and returns it. This runs only when you request it.
- Pinterest connection (OAuth broker). When you click Connect Pinterest, and periodically afterward to keep the connection alive, the plugin sends the Pinterest authorization code (on connect) or the refresh token (on renewal) to this service. The service holds Pin Magic’s confidential Pinterest application secret — which for security must never be shipped inside a public plugin — and exchanges it with Pinterest for the access token that is then returned to and stored on your site. The plugin also makes an occasional lightweight health check (no personal data) to this service to show connection status.
- Pinterest analytics. When you open the Analytics page, the plugin asks this service for your Pinterest performance figures — impressions, outbound clicks, pin clicks and saves for the last 30 days, and the same for individual pins. To do that it sends your Pinterest access token (so the service can call Pinterest as you), the install identifier (used only to keep one site’s cached results separate from another’s), and the Pinterest IDs of your own published pins — up to 50 per request — so the service can ask Pinterest for each pin’s figures. The service passes the request straight through to Pinterest’s official API and does not store your token. A successful result is cached for 12 hours, so in normal use this runs about twice a day per site. If the request fails, it is retried no more often than every 10 minutes until it succeeds. It runs only if you have connected Pinterest.
- Allowance check. While the pin wizard is open, the plugin asks this service how much of your monthly pin-copy allowance remains, so the counter on screen is accurate before you spend any of it. It sends the site and install identifiers and your current plan, and no post content. Nothing is consumed by asking.
- Plan status. The optional Pro plan (no monthly allowance on automatically written pin copy) is purchased on our website, not inside the plugin. When you open the Upgrade page — and when the pin wizard refreshes the allowance counter above — the plugin asks this service whether your site has an active Pro plan, sending only the site identifier. While the Upgrade page is open and in the foreground it repeats that check every few seconds, so a purchase made in another tab is picked up without you reloading; it stops as soon as you leave or hide the page. The “Upgrade” links open our pricing page (https://pinmagic.tech/upgrade) in a new browser tab, passing that same site identifier so a purchase can be matched back to your site. No checkout or payment form is embedded in the plugin.
No author name, email address, or IP address is sent to this service. Terms of Service: https://pinmagic.tech/terms — Privacy Policy: https://pinmagic.tech/privacy. Subprocessors: Cloudflare, Inc. (https://www.cloudflare.com/privacypolicy/) and, for pin copy generation only, Google LLC (https://policies.google.com/privacy).
Pinterest API (api.pinterest.com)
The plugin talks to Pinterest directly, using the access token obtained above, in these situations:
- Publishing. When you publish or schedule a pin, it sends the pin image, title, description, hashtags and target board. This is the core function of the plugin.
- Your boards. When you pick a board (in Settings, or in the pin wizard), it asks Pinterest for the list of boards on your account.
- Creating a board. If you choose to create a new Pinterest board from the plugin’s Settings screen, it sends the board name, description and privacy setting you entered.
- Checking the connection. Once a day, and when you open the dashboard, it asks Pinterest whether your connection is still valid, so an expired token is reported to you instead of surfacing as a failed pin. This sends only the token; no post or site data.
Pinterest Terms of Service: https://policy.pinterest.com/en/terms-of-service — Privacy Policy: https://policy.pinterest.com/en/privacy-policy.
Privacy
Pin Magic uses a few third-party services, each of which receives data only when you actively use the corresponding feature.
Pin copy creation
When you create a pin title or description from a blog post, Pin Magic sends the following to its pin-copy service (hosted on Cloudflare Workers, which proxies to Google’s Gemini API):
- Post title
- The alt text of the post’s featured image, if it has one
- Recipe details (name, summary, ingredients, total time, servings) — only if you use a supported recipe plugin on that post
- The titles of pins you have already made for that post, so new copy does not repeat them
- A hashed, non-reversible site identifier — a SHA-256 hash of your site URL plus admin email, used only to count your monthly pin creations against your plan’s allowance. Only the hash is sent; your URL and email are never transmitted, and the hash cannot be reversed to recover them.
- An install identifier — a random UUID generated on first run and stored in your database. It carries no information about you or your site; it exists so the service can keep one installation’s cached analytics and allowance separate from another’s. It is deleted when you delete the plugin.
- Your current plan (“free” or “pro”)
No author name, email, IP address, or personal identifiers are transmitted. Neither Cloudflare nor Google retains your prompt content beyond the time required to generate a response. The data subprocessors are Cloudflare, Inc. (cloudflare.com) and Google LLC (cloud.google.com).
Pinterest publishing
When you publish or schedule a pin, Pin Magic sends the pin image, title, description, and target Pinterest board to Pinterest via Pinterest’s official API. You authorize this once when you click Connect Pinterest and OAuth into your Pinterest Business account. Pinterest’s privacy policy applies: https://policy.pinterest.com/en/privacy-policy.
Link tagging on your published pins
Each pin’s destination link — always a URL on your own site — is tagged with utm_source=pinterest, utm_medium=pinmagic and a utm_campaign identifying that pin, so you can see Pinterest traffic separately in your own analytics. Nothing is sent anywhere by this; it only changes the link saved with the pin. To switch it off or change the values, return an empty array from the pinmagic_pin_utm_params filter.
Data stored on your site
Pin Magic stores pin history (titles, descriptions, scheduled times, publish status, error messages) and an error log in custom WordPress database tables on your own site, and keeps each post’s pins alongside that post. All of it lives entirely on your own server, and all of it is removed when you delete (not just deactivate) the plugin. The pin images Pin Magic has built are left in your uploads folder, as deleting a plugin should not remove images you may still be using.
What Pin Magic does not collect
Pin Magic itself includes no advertising or cross-site tracking pixels and does not sell your data. The pin-copy service counts how many pins you create each month against your plan’s allowance, keyed to the hashed, non-reversible site identifier described above (which is stable across reinstalling the plugin), but stores no personal information.