Title: CalendarDrop
Author: thejoshpenner
Published: <strong>septembre 28, 2026</strong>
Last modified: septembre 30, 2026

---

Search plugins

![](https://ps.w.org/calendardrop/assets/icon-256x256.png?rev=3717772)

# CalendarDrop

 By [thejoshpenner](https://profiles.wordpress.org/thejoshpenner/)

[Download](https://downloads.wordpress.org/plugin/calendardrop.1.3.0.zip)

 * [Details](https://tah.wordpress.org/plugins/calendardrop/#description)
 * [Reviews](https://tah.wordpress.org/plugins/calendardrop/#reviews)
 *  [Installation](https://tah.wordpress.org/plugins/calendardrop/#installation)
 * [Development](https://tah.wordpress.org/plugins/calendardrop/#developers)

 [Support](https://wordpress.org/support/plugin/calendardrop/)

## Description

CalendarDrop takes the busywork out of building an events calendar. Upload a flyer,
PDF, or Word document, or connect an inbound-email service to forward email text
through the authenticated webhook. CalendarDrop reads the date, time, venue, and
description and writes them up as a draft event for you to review.

The free plugin works through your own AI provider key (Bring Your Own Key). You
pick the provider, enter your key, and pay that provider directly. All existing 
BYO features remain available. An optional CalendarDrop service connection provides
a separate processing mode with an event allowance. Review current service availability
and terms in your CalendarDrop account before using it. Installing or connecting
this plugin does not start a paid subscription.

**What it does**

 * Reads event details from flyer images, PDFs, Microsoft Word (.docx) document-
   body text, and email text received through the authenticated webhook.
 * Creates events as drafts so you always review them before anything is published.
   Nothing goes live on its own.
 * Works with The Events Calendar when it is active: your imports land as native
   events you can open and edit there. The Events Calendar is a separate plugin 
   by StellarWP and is not required.
 * Works independently: if you do not use an event plugin, CalendarDrop creates 
   standard WordPress draft posts carrying the event details, so it runs on any 
   WordPress site.
 * Forward emails to import: use an inbound webhook service (like Mailgun or Postmark)
   to route forwarded emails to your site, and CalendarDrop reads them and drafts
   the event automatically.
 * A customizable public or private dropzone (off by default) that lets people you
   trust submit a flyer without a WordPress login, matched to your site with custom
   colors, fonts, and a logo.
 * Per-upload categories: assign a category to an upload and every event from it
   is filed under that category, so you can drive separate, filtered calendar views.
 * Duplicate handling: ignore a match, flag it as a new draft for review, or merge
   details into an existing draft. Merge mode leaves published and other non-draft
   events unchanged and reports that the duplicate needs review.
 * Pulls a featured image from the flyer when one is available.
 * In BYO mode, a built-in AI diagnostic assistant that helps you check your connection
   and troubleshoot setup in plain language.

Word imports read the main document text. They do not read embedded images, headers,
or footers; export designed Word flyers as PDF. Native PDF processing sends the 
complete PDF in subscription or Gemini mode. Other BYO providers can use complete
browser-extracted PDF text; scanned PDFs require a native-PDF provider. A first-
page thumbnail is never substituted for the document.

**Choose your AI provider (Bring Your Own Key)**

 * OpenAI and OpenAI-compatible chat endpoints (including Azure OpenAI and local/
   self-hosted endpoints)
 * Google Gemini (native API)
 * Anthropic Claude (native API)

The site administrator chooses the provider, enters their own API key, selects a
model, and clicks Test Connection. Keys are stored in your site’s own WordPress 
options database, on your own server.

### Third-Party Services / Privacy

In BYO mode, CalendarDrop uses the AI provider you choose and configure with your
own API key. Processing actions, connection tests, and optional scheduled imports
contact that provider. Scheduled imports run only if enabled by the administrator.

In BYO mode, when you run one of those actions, CalendarDrop sends the content being
processed to the provider you configured. That content can include event text, flyer
image data, extracted PDF and Word document text, and diagnostic prompts. Your API
key is stored only in your site’s own WordPress database and is **never** sent to
Penner Strategy. You are responsible for reviewing the provider’s Terms of Use and
Privacy Policy before using the plugin.

**Optional CalendarDrop service.** The plugin connects to https://calendardrop.pennerstrategy.
com, operated by Penner Strategy. Opening CalendarDrop > Subscription requests service
status and plan information and sends your site URL. After you connect, that page
also requests your account allowance and billing status using a private site token.
Connecting sends the one-time connection code or paid license key and site URL to
the service. Connection and processing mode are separate choices; connecting does
not change your saved BYO mode.

When you explicitly select subscription mode and submit an import, the plugin sends
the site URL, timezone, current date/time, and submitted event text, image, or complete
PDF to CalendarDrop. Word document imports send extracted document-body text. CalendarDrop
forwards the source and extraction instructions to Google’s Gemini API and returns
event details for WordPress draft creation. The service holds its own AI provider
credential. Your existing BYO keys are not sent to CalendarDrop. The plugin stores
the separate private site token in a non-autoloaded WordPress option and never displays
it.

Created draft events consume the service allowance. Duplicate and failed event outcomes
release their reservations after confirmation. Interrupted or uncertain imports 
remain reserved for review. WordPress stores job IDs, per-event outcomes, idempotency
context, and saved result summaries for replay and reconciliation; these records
are not a full token-cost ledger and currently have no automatic retention cleanup.
Pending settlement confirmations can retry in the background without repeating extraction.
The service keeps account, usage and billing records and temporarily keeps extracted
results for recovery. Review its current data-use and retention information before
sending material.

Subscription mode supports event-text imports, authenticated email webhooks, and
flyer uploads (up to 4 MB for native images/PDFs). AI diagnostics, AI edits, and
scheduled web-feed extraction remain BYO features. Service processing and purchase
availability are shown in the CalendarDrop account; the plugin does not guarantee
availability or activate a purchase on its own.

CalendarDrop account and service information: https://calendardrop.pennerstrategy.
com/account
 Data use and retention: https://calendardrop.pennerstrategy.com/privacy
Service terms: https://calendardrop.pennerstrategy.com/terms

Polar handles subscription checkout, payment methods, billing and license verification
when those features are available. CalendarDrop sends your account email and customer
identity to Polar for checkout or billing access and validates the paid license 
and connected site with Polar. Card details are handled by Polar rather than this
WordPress plugin. Review the purchase terms shown by Polar before confirming. Polar
Privacy: https://polar.sh/legal/privacy-policy

Supported providers and their terms:

 * OpenAI: https://openai.com: Terms: https://openai.com/policies/terms-of-use: 
   Privacy: https://openai.com/policies/privacy-policy
 * Google Gemini: https://ai.google.dev: Terms: https://ai.google.dev/gemini-api/
   terms: Privacy: https://policies.google.com/privacy
 * Anthropic Claude: https://www.anthropic.com: Terms: https://www.anthropic.com/
   legal/consumer-terms: Privacy: https://www.anthropic.com/legal/privacy

**Google Places (optional).** If you supply your own Google Maps API key and an 
event has a venue name, CalendarDrop sends that venue/location name to the Google
Places API to look up address details. Nothing is sent to Google unless you have
configured a Google Maps key. Google Terms: https://cloud.google.com/maps-platform/
terms: Privacy: https://policies.google.com/privacy

## Installation

 1. Upload the `calendardrop` folder to `/wp-content/plugins/`, or upload the zip directly
    from Plugins > Add New > Upload Plugin.
 2. Activate CalendarDrop through the Plugins menu.
 3. Open **CalendarDrop** in the WordPress admin menu.
 4. Choose your AI provider, enter your API key, pick a model, and click **Test Connection**.
    To use the optional CalendarDrop service, open **CalendarDrop > Subscription**,
    review service availability, connect the site, and explicitly select subscription
    mode instead.
 5. Optional: install and activate The Events Calendar so imports become native calendar
    events. Without it, CalendarDrop creates standard draft posts instead.

## FAQ

### Do I need an AI provider API key?

BYO mode requires your own provider key. The optional CalendarDrop service uses 
its own provider credential, so you do not need a separate AI provider key for subscription
processing. You must connect a site account, select subscription mode, and have 
an available allowance. Review current service availability in your account.

### Which AI providers are supported?

OpenAI (and OpenAI-compatible endpoints such as Azure OpenAI and local/self-hosted
endpoints), Google Gemini, and Anthropic Claude. You choose one, supply your own
key, and select a model.

### Does it require The Events Calendar?

No. CalendarDrop works best with The Events Calendar active, where imports become
native events. If that plugin is not installed, CalendarDrop falls back to creating
standard WordPress draft posts that carry the event details, so it runs on any site.

### Are events published automatically?

No. Everything CalendarDrop creates is a draft. You review and publish each event
yourself. Email and webhook imports are forced to draft status as well.

### How does the public dropzone work?

CalendarDrop can expose a public dropzone where someone can submit a flyer without
logging in. It is off by default. When you enable it, the link is protected by a
secret, uploads are rate-limited and validated server-side, and every submission
still becomes a draft for your review.

### How do I set up email or webhook forwarding?

CalendarDrop provides a secret-authenticated REST webhook URL on the Advanced Integrations
tab. Point your inbound-email service at that URL (for example Postmark, Mailgun,
or a SendGrid-style inbound parse) so forwarded emails POST to it. CalendarDrop 
reads the email body, drafts the event, and logs the result. Email forwarding requires
a separately configured inbound-email service, which may charge its own fees. CalendarDrop
does not provide an email inbox. Subscription mode has a separate event-text form
that creates drafts for review. File uploads do not require an inbound-email service.

### How do categories work?

You can assign a category to an upload. Every event imported from that upload is
automatically filed under that category, which lets you build separate, filtered
calendar views.

### Is it really free?

Yes. The existing BYO plugin features remain free. You pay your chosen provider 
for its usage. The CalendarDrop service is optional and has its own allowance and
billing. A CalendarDrop subscription is not required for BYO features.

### Where can I ask a question or share feedback?

For CalendarDrop questions, bug reports, or feedback, email josh@pennerstrategy.
com. Include your WordPress and CalendarDrop versions and a short description of
what happened.

### Where is my API key stored, and is it sent to you?

Your BYO provider key lives in your site’s WordPress options database. It is sent
only to the AI provider you configure, never to the CalendarDrop subscription service.
Subscription mode stores a separate private site token for requests to its configured
service.

Deleting the plugin removes local subscription credentials and job records. It does
not cancel a service subscription or release unresolved service reservations. Resolve
pending imports and manage billing from the service account before removing the 
plugin.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“CalendarDrop” is open source software. The following people have contributed to
this plugin.

Contributors

 *   [ thejoshpenner ](https://profiles.wordpress.org/thejoshpenner/)

[Translate “CalendarDrop” into your language.](https://translate.wordpress.org/projects/wp-plugins/calendardrop)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/calendardrop/), check
out the [SVN repository](https://plugins.svn.wordpress.org/calendardrop/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/calendardrop/) by
[RSS](https://plugins.trac.wordpress.org/log/calendardrop/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.3.0

 * Keep complete native PDF bytes, reject preview-only PDF imports, bound expanded
   Word XML, and show clear repeated/empty import results.
 * Remove local subscription secrets and receipts on plugin deletion.
 * Add an optional CalendarDrop service connection with a private site token, draft-
   based credits, and pending settlement recovery. Service availability and purchases
   are managed separately in the CalendarDrop account.
 * Preserve direct AI provider mode and draft review requirements.

#### 1.2.4

 * Require editorial review for all imports, including sites with an older automatic-
   publish setting.
 * Keep published and other non-draft events unchanged when a duplicate import requests
   a merge.
 * Clarify supported imports and duplicate-review behavior.

#### 1.2.3

 * Correct the description and upload error messages to match the supported file-
   upload and authenticated email/webhook import paths.
 * Clarify the separate inbound-email service requirement and the absence of a paste-
   text import screen.

#### 1.2.2

 * Prevent calendar-property injection by escaping all newline forms in exported
   event text at output.

#### 1.2.1

 * Prevent public calendar exports from disclosing draft, private, pending, scheduled,
   trashed, or password-protected event content.
 * Reject malformed export IDs and verify post visibility before reading event data.
 * Update compatibility metadata after local WordPress 7.1 activation and calendar-
   export regression checks.

#### 1.2.0

 * Enqueue all scripts/styles per WordPress.org guidelines.

#### 1.1.9

 * Removed the website-import reader so the plugin only processes flyers, PDFs, 
   Word documents, and forwarded email/webhook text.

#### 1.1.8

 * Events now pull a featured image from the flyer (image files and PDF page 1).
 * Added the built-in AI diagnostic assistant with formatted, plain-language responses.
 * Added per-upload categories for filtered calendar views.
 * All assets are now bundled locally (no external CDN or font requests); public
   credit attribution defaults to off.
 * Hardened the public upload and email/webhook paths (rate limiting, server-side
   validation, secret authentication).

## Meta

 *  Version **1.3.0**
 *  Last updated **10 minutes ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1.2**
 *  PHP version ** 8.0 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/calendardrop/)
 * Tags
 * [AI](https://tah.wordpress.org/plugins/tags/ai/)[calendar](https://tah.wordpress.org/plugins/tags/calendar/)
   [events](https://tah.wordpress.org/plugins/tags/events/)[flyer](https://tah.wordpress.org/plugins/tags/flyer/)
   [import](https://tah.wordpress.org/plugins/tags/import/)
 *  [Advanced View](https://tah.wordpress.org/plugins/calendardrop/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/calendardrop/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/calendardrop/reviews/)

## Contributors

 *   [ thejoshpenner ](https://profiles.wordpress.org/thejoshpenner/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/calendardrop/)