geodirectory/manage-package manages pricing packages for a listing type: create adds one, update edits one by ID, set_default makes one the default for new listings.
Requires the Pricing Manager add-on. Without it there are no packages, and the ability reports that rather than returning nothing.
At a glance
| Ability | geodirectory/manage-package |
| Toolset | GeoDirectory — toolset/geodirectory |
| Group | GeoDirectory › Pricing Packages |
| Requires | AcrossAI Pro, plus GeoDirectory active on the site |
| Capability | manage_options |
| Safety | Writes data |
| Repeatable | Not idempotent — each call changes the row set, so re-running is not a no-op |
| Ships in | AcrossAI Pro 0.9.16 and later |
These are prices, and they apply to real transactions
A package is what a directory charges. Changing amount changes what the next person pays, immediately, with no staging step.
Existing subscriptions are the part to think about. A recurring package whose price changes does not necessarily reprice existing subscribers, and which behaviour applies depends on the payment gateway rather than on GeoDirectory — so a price change can produce two cohorts paying different amounts.
The time fields decide how long a listing stays live: time_interval counted in time_unit, with 0 meaning it never expires. The downgrade package is what a listing drops to at expiry, and 0 means it expires outright — which unpublishes the listing.
The post_status field decides what a new listing on this package gets. A paid package usually publishes; a free one often goes to pending for review, and that is a moderation decision rather than a pricing one.
Setting the default moves the flag off whichever package holds it.
Not idempotent for create.
Input
| Name | Type | Required | What it is |
|---|---|---|---|
action | string | Yes | create, update or set_default. |
package_id | integer | For update and set_default | Package ID. |
post_type | string | No | Listing type, for example gd_place. Defaults to the site default. See geodirectory/get-directory-overview for the valid values. |
name | string | For create | Internal package name. |
title | string | No | Public-facing title shown at checkout. |
description | string | No | Package description. |
amount | string | No | Price as a decimal string, for example 29.99. Use 0 for free. |
time_interval | integer | No | How many time units the listing stays live. 0 means it never expires. |
time_unit | string | No | D days, W weeks, M months, Y years. |
recurring | boolean | No | Whether it bills on a recurring subscription. |
recurring_limit | integer | No | Maximum billing cycles; 0 for unlimited. |
trial | boolean | No | Whether it offers a trial. |
trial_amount | string | No | Trial price as a decimal string. |
trial_interval | integer | No | Trial length. |
trial_unit | string | No | Unit for the trial length. |
downgrade_pkg | integer | No | Package to drop to at expiry; 0 to expire outright. |
post_status | string | No | Status new listings on this package get. |
display_order | integer | No | Position in the package chooser. |
status | boolean | No | Whether the package is selectable. |
What comes back
| Name | Type | What it is |
|---|---|---|
package | object | The package after the write. |
success | boolean | Whether the call completed. |
message | string | A one-line summary of what happened, suitable for showing a human. |
error_code | string | Present only on failure — a stable machine-readable reason, such as a missing field, a wrong field type or an unmet confirmation. |
Example
Ask your assistant:
Add a £29 annual listing package.
It resolves to one call:
{
"ability": "geodirectory/manage-package",
"parameters": {
"action": "create",
"name": "annual-standard",
"title": "Standard listing",
"amount": "29.00",
"time_interval": 1,
"time_unit": "Y"
}
}Worth knowing
- Price changes apply to the next transaction immediately.
- Whether existing subscribers are repriced is the gateway’s behaviour, not GeoDirectory’s.
- A downgrade package of 0 unpublishes listings at expiry.
- The status a new listing gets is a moderation decision set here.
Related abilities
- GeoDirectory List Pricing Packages — read the current packages
- GeoDirectory Delete Pricing Package — remove one
Get the plugins:
AcrossAI Abilities Manager · AcrossAI MCP Manager
Browse the rest: Every ability, by category