WordPress Connector — Setup Guide
This guide walks you through connecting your WordPress site (with the Association App WordPress Plugin installed) to the new platform. By the end you will have a working sync that imports your existing content automatically.
Before You Begin
Make sure the following are in place:
| Requirement | How to check |
|---|---|
| WordPress Plugin v1.2.0+ is installed and active | WordPress Admin → Plugins |
| Your WordPress site is publicly accessible over HTTPS | Visit your site URL in a browser |
| Permalinks are set to Post name | WordPress Admin → Settings → Permalinks |
| You have the Sync API Key from the plugin settings | WordPress Admin → Settings → Association App |
Get your Sync API Key
- Go to WordPress Admin → Settings → Association App
- Open the Sync tab
- Copy the Sync API Key — you will paste this into the connector wizard
- If no key exists, click Generate Key and save the page
Verify the plugin is accessible
Open your browser and visit (replace your-site.com with your domain):
https://your-site.com/api/v1/sync/ping
You should receive a 401 Unauthorized response. That is correct — it means the endpoint exists and is waiting for a valid API key. If you get a 404, go to Settings → Permalinks → Save Changes in WordPress Admin to flush the rewrite rules.
Step 1 — Open the Connector Wizard
- Log in to the Association App Dashboard
- In the left sidebar, click Connectors
- On the Integration Hub page, find WordPress in the available integrations list
- Click Connect on the WordPress card
This opens the 5-step setup wizard.
Step 2 — Basic Information
| Field | What to enter |
|---|---|
| Connector Name | A friendly name, e.g. My Association WordPress |
| Organisation | Pre-filled with your current organisation |
Click Next.
Step 3 — Authentication
| Field | What to enter |
|---|---|
| WordPress Site URL | Full URL of your site, e.g. https://your-association.com.au — no trailing slash |
| Sync API Key | The key you copied from WordPress Admin → Settings → Association App |
Use the exact URL your WordPress site is served from. Include https://. Do not add /wp-admin or any path suffix.
Click Test Connection to verify before continuing. You will see a 5-step diagnostic:
| Check | What it verifies |
|---|---|
| HTTP reachable | The platform can reach your WordPress URL |
| REST API root | /wp-json responds correctly |
| Plugin installed | The Association App plugin is active |
| API key valid | The key matches what is stored in WordPress |
| Data available | At least one sync endpoint returns data |
All five checks must pass (green tick). Fix any failures before proceeding.
Click Next.
Step 4 — Sync Settings
Choose which entity types to import. All are enabled by default:
| Entity | What it imports |
|---|---|
| Articles | WordPress posts (blog articles / news) |
| Members | WordPress users (all roles) |
| Events | Custom post type: event |
| Documents | Custom post types: document, policy, recall |
| Conferences | Custom post type: conference |
| Companies | Custom post type: company |
| Notifications | Custom post type: notification |
Sync direction: WordPress → Platform (INBOUND). Data flows one way from WordPress into the platform.
Sync interval: How often the scheduler automatically checks for new/changed records. Recommended: 60 minutes. Set to blank to disable automatic syncing (manual only).
Image mirroring: If enabled, featured images are downloaded from WordPress and stored in your platform's cloud storage. Recommended for a clean migration.
Document file copying: If enabled, document files (PDFs etc.) are downloaded from WordPress URLs and stored in platform storage. Recommended — otherwise only metadata is imported.
Click Next.
Step 5 — Field Mapping
The platform maps WordPress fields to platform fields. Default mappings are pre-filled and work for the standard plugin setup. You only need to change these if your WordPress site uses custom meta field names.
Article field mappings
| WordPress field | Platform field | Notes |
|---|---|---|
post_title | title | |
post_content | content | HTML is parsed into content blocks |
post_excerpt | summary | Falls back to first 30 words of content |
post_name (slug) | slug | URL-friendly identifier |
| Featured image URL | featuredImageUrl | |
post_date_gmt | sourceCreatedAt | Original WP publish date preserved |
post_modified_gmt | sourceUpdatedAt | |
wp_get_post_categories | category | First category name is used |
wp_get_post_tags | tags | All tag names as array |
display_name | authorName |
Member field mappings
| WordPress meta key | Platform field | Notes |
|---|---|---|
user_email | email | |
first_name | firstName | |
last_name | lastName | |
display_name | displayName | |
mobile_number | phoneNumber | |
job_title | jobTitle | |
company_organization | company | |
birthday | dateOfBirth | |
street_address | addressLine1 | |
city | city | |
zip | postalCode | |
is_certified | isCertified | Boolean |
renewal_date | membershipRenewalDate | |
is_exclude_listing | isExcludedFromListing | Boolean |
| WordPress role | membershipStatus | See mapping table below |
WordPress role → membership status:
| WordPress role | Platform status |
|---|---|
association-member | ACTIVE |
pending-review | PENDING |
administrator | ADMIN |
| Any other role | INACTIVE |
Event field mappings
| WordPress meta key | Platform field | Notes |
|---|---|---|
post_title | title | |
post_content | description | |
post_excerpt | excerpt | |
_event_date_time_start | startDate | Unix timestamp (ms) → ISO-8601 |
_event_date_time_end | endDate | Unix timestamp (ms) → ISO-8601 |
_event_all_day | isAllDay | Boolean |
_event_is_virtual | isVirtual | Boolean |
_event_cost | cost | |
_event_url | registrationUrl | |
_location_address | location.address | |
_location_city | location.city | |
_location_state | location.state | |
_location_zip_code | location.postalCode | |
| Featured image | featuredImageUrl | |
_event_attending_count | attendingCount |
Document field mappings
Covers three WordPress post types: document, policy, recall
| WordPress field | Platform field | Notes |
|---|---|---|
post_title | title | |
_document_file / _policy_file / _recall_file | fileUrl | File attachment URL |
| File extension | mimeType | Detected from URL |
| Taxonomy term | folder | document_folder, policy_folder, recall_folder |
post_status | status | publish → PUBLISHED |
Conference field mappings
Same structure as events, with eventType: 'CONFERENCE' added automatically.
Company field mappings
| WordPress meta key | Platform field |
|---|---|
post_title | companyName |
post_content | description |
_company_url | website |
_company_phone | contactPhone |
_company_email | contactEmail |
| Featured image | logoUrl |
Click Next when mappings look correct.
Step 6 — Review & Connect
Review the summary of your configuration:
- Connector name
- WordPress URL
- Entities to sync
- Sync schedule
Click Connect to save the connector. The connector is now created with status ACTIVE.
Run the Initial Import
After creating the connector, you must run the Initial Import once to pull all existing data.
The scheduled sync only fetches records changed since the last sync. Without an Initial Import, historical data will not be imported.
- Go to Connectors → [your WordPress connector]
- Click Run Initial Import
- Confirm in the dialog
The initial import will:
- Set job type to
INITIAL_IMPORT - Fetch ALL records from ALL enabled entity types (no date filter)
- Create or update every record in the platform
- Mark the connector as
is_initial_migration_done = true(you can only run it once)
Monitor progress in the Sync Jobs tab. The live panel updates every 2 seconds with the current entity being processed and progress counts.
Monitoring Sync Progress
Sync Jobs tab
Shows a table of all sync jobs with:
- Date and time started
- Job type (INITIAL_IMPORT, FULL_SYNC, INCREMENTAL)
- Status (PENDING, RUNNING, COMPLETED, FAILED)
- Records processed / succeeded / failed / skipped
- Duration
Click a job row to see per-entity logs.
Per-entity logs
For each record processed, a log entry shows:
- Entity type (article, member, event, etc.)
- External ID (WordPress post/user ID)
- Operation (CREATE, UPDATE, SKIP)
- Status (SUCCESS, FAILED, SKIPPED)
- Error details (if failed)
Live sync panel
While a sync is running, the Live panel streams real-time updates (Server-Sent Events) showing the current phase and counts as records are processed.
Statistics tab
Shows aggregate stats:
- Total jobs run
- Successful jobs
- Total records synced
- Last sync time
- Next scheduled sync time
After the Initial Import
Once the initial import completes:
- Verify your data — Go to Articles, Members, Events, Documents and spot-check that records look correct
- Check sync logs — Open the sync job and look for any
FAILEDorSKIPPEDrecords - Enable scheduled sync — If you set a sync interval, auto-sync is already active
- Run diagnostics — Use the Diagnostic Panel to validate field mappings are working as expected
Editing a Connector
You can update connector settings at any time:
- Go to Connectors → [your connector] → Settings tab
- Edit any field — URL, API key, sync interval, enabled entities
- Click Save
If you regenerate the key in WordPress, update it in the connector settings before the next sync runs, or the sync will fail with a 401 error.
Deleting a Connector
Deleting a connector removes the connector configuration and all sync job history. It does not delete the data that was already imported — your articles, members, events etc. remain in the platform.
To delete: Connectors → [your connector] → ⋯ menu → Delete Connector