Company catalog
Inactive records stay in history but cannot be used for new time logs.
Carpenters
Phone is the SMS identity.
- Active
Carlos Mendoza
+15551230001
- Active
James Wright
+15551230003
- Active
Maria Lopez
+15551230002
- Active
Pedro Alvarez
+15551230004
Job sites
Include nicknames the crew actually uses.
- Active
5th Street Townhomes
210 5th Street
- Active
Lot 12 Warehouse
12 Industrial Way
- Active
Martinez Residence
418 Cedar Ave
Twilio SMS
Crew texts hit this webhook, then the same review queue as the paste box.
Auth token missingTwilio number missing
Messaging webhook URL
https://construction1-malican.vercel.app/api/webhooks/twilio/sms- In Twilio Phone Numbers, open the number the crew will text.
- Messaging configuration → A message comes in: Webhook, HTTP POST. Paste the messaging webhook URL.
- Put the Account SID, Auth Token, and phone number into
.env.localasTWILIO_ACCOUNT_SID,TWILIO_AUTH_TOKEN, andTWILIO_PHONE_NUMBER. Restart the app. - Carpenter phones in Catalog must match the SMS From number in E.164 (example +15551230001).
- Twilio signs requests against the public HTTPS URL. Locally, put a tunnel in front of this app and set
APP_URLto that origin. Signature checks are skipped until the auth token is set.
WhatsApp
Optional Meta Cloud API path. Same review queue as SMS and the paste box.
Verify token missingReply token missing
Callback URL
https://construction1-malican.vercel.app/api/webhooks/whatsapp- In Meta for Developers, open (or create) an app and add the WhatsApp product.
- WhatsApp → Configuration → Webhook: paste the callback URL and verify token, then subscribe to messages.
- Copy the Phone number ID and a permanent access token into
.env.localasWHATSAPP_PHONE_NUMBER_IDandWHATSAPP_ACCESS_TOKEN. Restart the app. - Optional: set
WHATSAPP_APP_SECRETso inbound POSTs are signature-checked. Carpenter phones in Catalog must match the WhatsApp numbers that send logs. - Meta requires HTTPS. Locally, put a tunnel in front of this app and set
APP_URLto that public origin.