Northline Carpentry

Crew time and activity log

Paste a carpenter's unstructured note with hours, job, and what they did. The office confirms the day's hours.

Company catalog

Inactive records stay in history but cannot be used for new time logs.

Carpenters
Phone is the SMS identity.
  • Carlos Mendoza

    +15551230001

    Active
  • James Wright

    +15551230003

    Active
  • Maria Lopez

    +15551230002

    Active
  • Pedro Alvarez

    +15551230004

    Active
Job sites
Include nicknames the crew actually uses.
  • 5th Street Townhomes

    210 5th Street

    Active
  • Lot 12 Warehouse

    12 Industrial Way

    Active
  • Martinez Residence

    418 Cedar Ave

    Active
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
  1. In Twilio Phone Numbers, open the number the crew will text.
  2. Messaging configuration → A message comes in: Webhook, HTTP POST. Paste the messaging webhook URL.
  3. Put the Account SID, Auth Token, and phone number into .env.local as TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, and TWILIO_PHONE_NUMBER. Restart the app.
  4. Carpenter phones in Catalog must match the SMS From number in E.164 (example +15551230001).
  5. Twilio signs requests against the public HTTPS URL. Locally, put a tunnel in front of this app and set APP_URL to 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
  1. In Meta for Developers, open (or create) an app and add the WhatsApp product.
  2. WhatsApp → Configuration → Webhook: paste the callback URL and verify token, then subscribe to messages.
  3. Copy the Phone number ID and a permanent access token into .env.local as WHATSAPP_PHONE_NUMBER_ID and WHATSAPP_ACCESS_TOKEN. Restart the app.
  4. Optional: set WHATSAPP_APP_SECRET so inbound POSTs are signature-checked. Carpenter phones in Catalog must match the WhatsApp numbers that send logs.
  5. Meta requires HTTPS. Locally, put a tunnel in front of this app and set APP_URL to that public origin.