2627 Greg Electrical quote
About 1500 in materials

2627 Greg Electrical quote
About 1500 in materials

When we are able to in our own in-house platform, actively reserve a room for a price that we decide in that active reservation integrates in blocks all of the other channels that sell that specific room, thatās when
That is the game changer.
How far are we from that point?
Super close. We are three months out from being able to effectively use in the ploy or test in deploy this system in the scenario of what you will see are our regular guest being able to book a room a stay at a discounted rate than the rate that is being fed to all of the algorithms, so weāll stay competitive with the outside world and capitalize on the market rate while providing a regular guest, the ability to stay loyal.
Why is that important?
During low seasons, who pays the bills are your returning guest. At SWJ one of our address or a rate of returning Guest beating the market by a healthy margin over 15% above market.

š 04/26/2026 09:02 AM EST
Based on your screenshots, hereās exactly whatās happening and where thatĀ āPropertiesā menuĀ is showing:
From yourĀ Menus ā Manage Locations screen, I can see:
Page Header Menu ā Properties
š That means:
TheĀ āPropertiesā menu is NOT your main navigation
It is assigned to aĀ secondary menu location built into the Neve theme called āPage Header Menuā
In Neve, theĀ Page Header MenuĀ typically shows:
At theĀ top of specific pages
Inside aĀ page header / hero section
Sometimes only onĀ pages that use a custom header layout
So you wonāt always see it globally like your main menu.
Visit:Ā staywithjay.com
AĀ custom header
OR aĀ property-related page (Rooms / Spaces / Properties)
AĀ secondary navigation bar
Usually near:
Page title
Hero section
Top overlay menu
Yes ā you were right to think about Neve.
Appearance ā Customize
ClickĀ Header
Look for:
Header Builder
ORĀ Page Header / Elements
Check if there is:
AĀ secondary menu block
Or aĀ āPage Header Menuā element
Then one of these is true:
Neve allows menu locations without displaying them.
š Fix:
Go toĀ Customize ā Header Builder
Look for an empty row (top/bottom)
AddĀ āSecondary Menuā or āNav Menuā
Assign it toĀ Properties
Because youāre using:
ACF
Custom Post Types (Spaces, Rooms, Properties)
š That menu may be injected via:
AĀ template
AĀ block pattern
OrĀ custom code (WPCode / theme)
Given:
You duplicatedĀ Rooms ā Spaces (ACF post type)
You have structured sections likeĀ Kitchen&Security3
š The āPropertiesā menu is probably:
Used inside aĀ template for property pages
Not globally visible
Go toĀ Appearance ā Menus
ClickĀ EditĀ on theĀ Properties menu
Add aĀ test itemĀ (like āTEST LINKā)
Save
Refresh your frontend pages
š Wherever that shows up = where the menu is being rendered
You currently have:
Primary Menu = main
Secondary Menu = main (duplicate)
Page Header Menu = Properties
That duplication can create confusion later.
š Clean structure I recommend (donāt change yet unless asked):
Primary = Main Nav
Secondary = Utility (login, CTA, etc.)
Page Header = Contextual (Properties, Rooms, etc.)
If you want next, I can trace exactlyĀ which template or page is rendering that menuĀ based on your CPT + ACF setup.
š 04/26/2026 11:52 AM EST
Hereās exactly what will happen based on your current setup:
You are inside:
Zap (or automation) ā Step 3: āCreate Postā (WordPress)
And you mapped:
Categories āĀ Property name: Green Room - Suite
But:
āGreen Room – Suiteā isĀ NOT a category
Itās dynamic text coming fromĀ Hospitable (property name)
š So WordPress will:
Create a NEW category automaticallyĀ called:
If that category already exists ā it will reuse it
After the zap runs, youāll see:
A new post created
That post will be filed under:
So your categories list will start filling up like:
Green Room – Suite
Blue Room – Studio
Penthouse Loft
etc.
You are usingĀ Categories as dynamic property labels
That means:
Your category system becomesĀ auto-generated per property
This can get messy fast if:
Names change
Typos occur
Duplicate formats exist
This does NOT:
Link to yourĀ ACF āSpacesā or āPropertiesā post type
Connect to yourĀ custom property pages
Control yourĀ Property menu you asked about earlier
This isĀ only organizing blog posts via categories
Right now, this automation is:
š Turning each reservation into aĀ WordPress post
š Grouped byĀ property name as a category
A post will be created ā
A category namedĀ āGreen Room – SuiteāĀ will be created/used ā
That post will be assigned to that category ā
If you want, next step you can ask:
How to connect this to yourĀ Spaces (ACF post type)Ā instead of categories
Or how to map this into aĀ Property page system instead of blog posts
š 04/26/2026 11:56 AM EST
Got it ā focusing ONLY onĀ Step 1 (the trigger):
This is theĀ event that starts everything.
Every timeĀ ANY reservation is:
Created (new booking)
Updated (date change, guest info, status, etc.)
ā”ļø This automation will run
From your screenshot, Step 1 is sending:
Property public name āĀ Stay with Jay in Cleveland
Property street āĀ 2014 West 100th Street
Property name āĀ Green Room - Suite
Property ID āĀ 7e7f4b2-3192-...
š These areĀ dynamic variablesĀ coming from Hospitable
So:
š It will fire for:
Every property
Every reservation
Every update (even small ones)
Right now, your flow will:
Create a new WordPress post
EVERY time a reservation is updated
Not just created āĀ updated too
Guest books:
ā Zap runs ā
Guest changes check-in time:
ā Zap runs AGAIN ā ļø
You update reservation manually:
ā Zap runs AGAIN ā ļø
You may end up with:
Duplicate posts
Multiple posts per reservation
Messy data over time
Because this defines:
WHEN your system fires
HOW often posts get created
WHETHER your data stays clean or explodes
ItĀ does give you the right data, especially:
Property nameĀ (used in Step 3)
Property IDĀ (VERY important for future logic)
Right now there is:
ā No filter (e.g. only ānew reservationsā)
ā No deduplication logic
ā No condition like āonly if status = confirmedā
Step 1 is:
A wide-open trigger that fires onĀ every reservation activity
Thatās powerful ā but also dangerous without control.
If you want to go deeper next, you can ask specifically about:
Filtering only new bookings
Preventing duplicate WordPress posts
Using Property ID properly (this is the real key for scaling)
š 04/26/2026 11:57 AM EST
Yes ā that changes the behavior in a good way.
Now HospitableāsĀ Property nickname / internal nameĀ is:
So in Zapier Step 1, you should use the Hospitable field that pulls this internal/property nickname ā not the public guest-facing name.
That means WordPress can categorize the post under:
instead of:
Result:
Cleaner WordPress categories
Stable naming
Easier filtering later
Less risk if the public Airbnb/Booking title changes
In Zapier Step 3, mapĀ CategoriesĀ to the Hospitable field that returns:
not the field that returns:
This is the right direction.
š 04/26/2026 12:00 PM EST
Good ā hereās exactly what that change does.
You mapped:
(from Step 1 ā Hospitable)
Every WordPress post created by this Zap will get a tag:
Just like categories:
If the tagĀ doesnāt existĀ ā WordPress willĀ create it
If itĀ already existsĀ ā it will reuse it
Youāre now tagging posts byĀ event type
So later you can:
Filter posts by:
reservation.created
reservation.updated
Build views like:
āOnly new bookingsā
āOnly modified reservationsā
Your trigger is:
Reservation Updated OR Created
So depending on the event:
You may get tags like:
reservation.created
reservation.updated
š That means your WordPress tags will grow dynamically based on actions
Right now your system is:
Category = PropertyĀ (currently still usingĀ Green Room – SuiteĀ in screenshot)
Tag = Event TypeĀ (reservation.created)
So a post becomes:
YourĀ Categories field is STILL using:
ā Not the internal nameĀ P2014S4
So your cleanup from earlier hasnāt been applied yet in Zapier.
You created aĀ tracking layer (tags)Ā for reservation activity ā
This is structured and scalable ā
If you want next, you can go deeper into:
Separating created vs updated cleanly
Or aligning Categories with your internal property IDs (P2014S4 system)
š 04/26/2026 12:03 PM EST
What youāve configured here will work exactly the way you think ā hereās the precise behavior:
This means:
Every post created by this Zap will beĀ immediately live on your site
No drafts, no review step
It will:
Appear in your blog
Be publicly accessible via URL
Be indexed (eventually by Google)
You mapped:
Use that timestamp as theĀ post publish date
Since itās in theĀ past, WP allows it to be published immediately ā
Each time the Zap runs:
A post is created
It isĀ instantly published
It isĀ backdated to the reservationās booking date
Your site will behave like:
š AĀ historical log of reservations
Where:
Posts are ordered byĀ booking date (not creation time)
Older bookings appear earlier in archives
New bookings appear as recent posts (based on booking timestamp)
Because your trigger includesĀ updates, not just creation:
š If a reservation is updated later:
AĀ new postĀ gets created again
With theĀ same past booking date
So you could get:
Multiple posts with identical timestamps
No visual indication which one is latest
Reservation created on April 13 ā Post created (dated April 13) ā
Reservation updated on April 20 ā NEW post created ā still dated April 13 ā ļø
WordPress publish requirement (past date) ā
Immediate publishing ā
Chronological alignment with booking data ā
Duplicate prevention
Update vs create distinction
Version tracking
Your system is currently:
Auto-publishing a backdated post for every reservation event
Itās technically correct ā but it behaves like aĀ log generator, not a clean database.
If you want next, you can focus specifically on:
Preventing duplicate posts from updates
Or converting this into a single ārecord per reservationā system instead of multiple posts
š 04/26/2026 12:06 PM EST
Perfect ā based on your latest screenshots, hereās exactly what will happen when you run this test reservation:
Hospitable detects:
New reservationĀ ORĀ update
Sends:
Property city āĀ Cleveland
Action āĀ reservation.created
Booking date
Property data
Guest info
A new row is created (log layer)
This is just storage ā no impact on WP behavior
Will dynamically include:
Guest name
Property public name
Property type
Action (reservation.created)
OTA platform
Guest portal link
Address
Property name
š This is working as aĀ structured data post
Right now you changed it to:
š What will happen:
WordPress will try to create categories like:
ā ļø These areĀ not human-readable categories
ā ļø These are internal relationship values from Hospitable
You now have:
š Result:
Tag:Ā Cleveland
Tag:Ā reservation.created
ā This is clean and useful
ā Post publishes immediately
ā Backdated correctly
After you run the test reservation:
WP Admin ā Reservations (Post Type)
Check:
Did only ONE post get created?
Or multiple?
Posts ā Categories
Look for:
child
Long UUID strings
š If you see those ā confirms category mapping issue
Verify:
Content formatting
Links working (GuestPortalLink)
Tags applied correctly
YourĀ Categories field is now pulling system-level data:
š This is NOT what you want for WordPress taxonomy
Tags structure ā
Post content mapping ā
Publish logic ā
Booking date logic ā
Dynamic data flow ā
This test will answer:
Does Zap create duplicates?
Are categories usable or broken?
Is content structured correctly?
Are tags behaving properly?
Your system is now:
A structured reservation logging system inside WordPress
BUT
Categories are currently pulling the wrong field (internal relationship data)
Run the test ā then show me:
The created post
The categories list after
That will determine the next exact fix.
š 04/26/2026 12:15 PM EST
Good ā this is a clean breakpoint. TheĀ 403 errorĀ tells us exactly whatās wrong.
AĀ 403 from WordPress via Zapier = permission/auth issue, NOT data.
Since you said:
āthe SWJ connection from previous step still worksā
š That confirms:
Zapier is connected ā
But WordPress isĀ blocking the POST request
You are creating a post in:
š This is aĀ custom post type (CPT)
Your WordPress REST API is likely:
ā Not exposing this CPT properly
OR
ā Not allowing your Zapier user to create posts in it
WP Admin ā
ACF ā Post Types
ClickĀ Reservations
(You already showed this screen earlier)
Make sure:
ā Ā Show in REST API = ON
Base URL =Ā reservationsĀ (or whatever you set)
ClickĀ Permissions
Look for:
Capability Type
Create Posts
Edit Posts
š Set:
Capability Type = post
OR enable default capabilities
Go to:
Users ā All Users
Find:
Click it
Role =Ā Administrator
š If NOT:
Change toĀ Administrator
Save
You are using:
But Zapierās WordPress app:
š SometimesĀ cannot write to custom post types unless:
They are registered with proper REST support
AND permissions are standard
In Zapier Step 3:
Change:
ClickĀ Test
ā Problem = CPT (Reservations) configuration
ā Problem = authentication / security plugin
You have:
WPCode
Possibly security layers
Check:
Settings ā Permalinks
ā ClickĀ Save ChangesĀ (flush rewrite rules)
Check:
REST API not blocked
XML-RPC not interfering
Your Google Sheets step worked perfectly:
Reservation captured ā
Property linked ā
Guest data ā
So the failure isĀ ONLY at WordPress write level
The 403 is caused by:
WordPress rejecting Zapierās attempt to create a post in yourĀ Reservations CPT
Test with:
Tell me result
That will isolate the issue 100% before we fix the CPT properly.
š 04/26/2026 12:18 PM EST
Yes ā switching the WordPress author toĀ Allan KorosueĀ may helpĀ only if Allan is truly an Administrator.
But the error message is more specific:
That points mainly to:
Categories
Tags
Taxonomies
Not the author field.
Your Zap is trying to assign dynamic values as categories/tags that WordPress is rejecting.
Especially this part:
That is likely causing the 403.
In Zapier Step 3:
LeaveĀ Author = Allan Korosue
Temporarily clearĀ Categories
Temporarily clearĀ Tags
Test the WordPress step again
If the test works:
If it still fails:
Your current error is strongly pointing to taxonomy assignment, not the post author.
š 04/26/2026 12:24 PM EST
Correct.
Your test proves the issue wasĀ category/term assignment, not the main WordPress connection.
What worked:
What caused the 403:
WordPress wants categories as valid assignable terms. Best path:
Create/import clean WP categories first
Example:
In Zapier, use a lookup step before WordPress:
Send theĀ WordPress category ID, not raw text, into the Categories field.
Your idea is right: a simple lookup/import table would work well.
Best structure:
Then Zapier can reliably assign the correct category without creating errors.
š 04/26/2026 12:29 PM EST
Yes ā and this is actually aĀ strategic breakthrough, not just a feature.
Letās stay grounded in what thisĀ technically enablesĀ in your system:
From your screenshot + explanation:
Property switched āĀ 2014AtticĀ āĀ P2014S4
Reservation ID stayed consistent
System updated cleanly in:
Hospitable ā
Google Sheets ā
NOT a new reservation.
So:
Same Reservation ID
New Property assignment
Given your current setup:
š This will trigger:
Another post creationĀ (because your trigger includes updates)
So youāll get:
Same reservation, different property
You now have a system that can track:
Property reassignment
Upgrade / downgrade flows
Inventory flexibility
Revenue optimization per booking
Because your sheet shows:
Right now your system:
LogsĀ events, notĀ states
Meaning:
It recordsĀ what happened
NotĀ what the current truth is
Because your infrastructure now supports:
Dynamic property reassignment
Without breaking reservation linkage
While preserving historical record
After this switch:
Check:
SameĀ Reservation_ID
DifferentĀ Property_NameĀ orĀ Property_ID
Check:
Did aĀ second post get created?
Does it reflect the new property?
You now have:
Your system is behaving like anĀ event stream, not a single-record database.
If you want to go deeper next, specify:
Whether you wantĀ one post per reservation
OrĀ a timeline/history per reservation
Those are two completely different architectures.
š 04/26/2026 12:36 PM EST
Hereās what I observe from what youāre sending into WordPress:
The post was created as aĀ ReservationĀ CPT.
Title/slug came through as:
Content came through with:
The excerpt also correctly became the Hospitable guest portal link:
TheĀ Property CategoryĀ line is blank.
That means the value you expected to populate there is either:
or mapped to the wrong Hospitable field.
Also, WordPress category assignment did not happen dynamically. The only checked category shown is:
That likely came from a fixed/default value, not the property.
In Google Sheets, the latest row shows the updated room/property as:
But the WordPress post content still shows:
That means WordPress is using an earlier trigger sample or earlier reservation state, not the newest switched-room value.
You successfully sent:
But the weak spots are:
So the Zap is working, but it is currently creating aĀ reservation log post, not yet a fully categorized property-aware record.
š 04/26/2026 12:39 PM EST
Youāre actually already getting the Post ID ā itās just a matter ofĀ using it after Step 3.
From your screenshot:
That is theĀ WordPress Post IDĀ returned by Zapier after the post is created.
Click:
ā (under Step 3)
Common options:
App:Ā Google Sheets
Action:Ā Update Spreadsheet Row
In the āUpdate Rowā step:
Find your column (create one if needed):
Map:
Use:
Reservation_ID (or your unique key)
So Zapier updates the SAME row created in Step 2.
Now your system becomes:
Example:
Once you store the Post ID, you can:
Update the SAME post later (instead of creating duplicates)
Attach ACF fields later
Modify content on reservation updates
Build a trueĀ 1 reservation = 1 post system
Your system is:
With Post ID stored, you can evolve to:
Anytime in Zapier:
Step 3 āĀ Data Out
Field:
You already have the Post ID being returned:
You just need toĀ capture it in a following stepĀ (Google Sheets or another action) to make it usable.
š 04/26/2026 12:42 PM EST
Good move ā this is exactly what needed to happen.
You now have this on yourĀ Reservation post type:
Before:
Tags field existed in WP
But not guaranteed available on your CPT
Now:
ā
YourĀ reservationĀ post type supportsĀ native WordPress tags
Zapier can safely assign:
No 403 errors from tags anymore
Because you explicitly added:
š This confirms:
Your CPT is usingĀ standard WP taxonomy
Zapier can assign categoriesĀ by ID or name
You also added:
This is aĀ custom taxonomy
š That means instead of using Tags for:
You now have the option to store that more cleanly as:
Which is structurally better than tags.
You now haveĀ 3 clean classification layers:
When the next Zap runs, verify:
Categories ā correctly assigned property
Tags ā Cleveland + reservation.created
(Optional) myaction ā populated if you map it
ZapierĀ does NOT automatically support custom taxonomiesĀ likeĀ myactionĀ unless:
The WordPress API exposes it
Or you use a custom field / webhook approach
So right now:
Tags = safe and working
Categories = safe (if mapped correctly)
myaction = available in WP, but not automatically usable in Zapier UI
You just upgraded your system from:
to:
If you want next step, you can explicitly decide:
Keep usingĀ Tags for actionsĀ (simpler)
OR wire Zapier to useĀ myaction taxonomy properlyĀ (more advanced, cleaner long-term)


Current Configuration
What I would like?
