Hello, I have searched the community topics and cannot find the answer - apologies if it’s been asked and answered before. I’m new to Pickaxe and have built a lead-magnet chatbot that seems to be working well. The only thing it is missing is the ability to ask for the user’s email before asking the chatbot questions. ChatGPT says to select the Chatbot and Toggle the Smart Form feature to ON and then build the email capture into that form, but I cannot find any mention of forms in my dashboard. What am I missing? I’m on the Gold plan. Thanks, Tony
The easiest way to do this is to change the Access setting of the your Studio. Either make it an invite-only Studio or make it Public but require them to create accounts to use the tools.
This Pickaxe User Manual explains the settings/configurations at great length.
Thanks Mike, but it is embedded in a WordPress landing page, rather than a Studio. I’m looking for the kind of thing where the chatbot asks for their email address as the first thing.
You can add an instruction in the prompt for the chatbot to ask for the email. However, you will not have a programmatic way to check that it is a real email before continuing in the conversation.
Thanks very much, Mike. That’s very good to know. Is there a way for the email addresses to be sent to Google Sheets - or would it need to be somehow hooked up to Make.com or similar?
Hi There
What I did was exactly that - ask for name and email address. I hooked it to the Airtable Action and it collects the data
Wow, that’s great - thank you. I searched in the Actions for Airtable but it didn’t find anything. Was it an Action that you created yourself?
I finally managed to successfully hook up to an Airtable database via a Custom Action (I am not a coder), and my chatbot does ask for the name and email address, but nothing shows up at Airtable. I’m sure it’s pilot error, but I don’t know what I’m doing wrong or how to debug it.
If you can put together a quick loom video, then we can see what is happening.
If it is not going to the airtable, then I think you could be missing something there with regards to identifying the base id etc.
Thanks very much lhmunro. We ran into inconsistencies with the bot not always asking for the email info, so we’ve decided to approach it a different simpler way.
@trock FYI - you can embed a form style pickaxe that asks for a name and email and that outputs in a chat format. Or you can adjust the prompt to ask for a name and email before responding.
I think the easiest way is to then send it to Airtable as suggested by @ihmunro.
Below is the Airtable custom action I use. You just need to replace the arguments with name and email for example instead of pillar and post idea.
import os
import requests
def airtable_create_record(pillar: str, post_idea: str):
"""
Create a new record in Airtable with the data from the chat
Args:
pillar (string): The post pillar
post_idea (string): The content idea of the post
Envs:
AIRTABLE_API_KEY (string): Airtable API key
AIRTABLE_BASE_ID (string): Airtable Base ID
AIRTABLE_TABLE_ID (string): Airtable Table ID
"""
# Insert your PYTHON code below. You can access environment variables using os.environ[].
# Currently, only the requests library is supported, but more libraries will be available soon.
# Use print statements or return values to display results to the user.
# If you save a png, pdf, csv, jpg, webp, gif, or html file in the root directory, it will be automatically displayed to the user.
# You do not have to call this function as the bot will automatically call and fill in the parameters.
# Airtable API configuration
airtable_base_id = os.environ["AIRTABLE_BASE_ID"] # Add your Airtable Base ID to the environment variable
airtable_table_id = os.environ["AIRTABLE_TABLE_ID"] # Add your Table ID or Table Name to the environment variable
airtable_api_key = os.environ["AIRTABLE_API_KEY"] # Add your Airtable API Key to the environment variable
if not all([airtable_base_id, airtable_table_id, airtable_api_key]):
return {"error": "Missing Airtable configuration in environment variables."}
# Airtable API endpoint
url = f"https://api.airtable.com/v0/{airtable_base_id}/{airtable_table_id}"
headers = {
"Authorization": f"Bearer {airtable_api_key}",
"Content-Type": "application/json"
}
payload = {
"fields": {
"Pillar": pillar,
"Post Idea": post_idea,
"Post Status": "Production"
}
}
print("📤 Sending to Airtable:", payload)
try:
response = requests.post(url, headers=headers, json=payload, timeout=10)
if response.status_code in [200, 201]:
print("✅ Record created successfully.")
return response.json()
else:
print(f"❌ Failed to create record: {response.status_code}, {response.text}")
return {"error": f"Request failed with status {response.status_code}", "details": response.text}
except requests.exceptions.Timeout:
return {"error": "Request to Airtable timed out."}
except requests.exceptions.RequestException as e:
return {"error": f"Request failed: {str(e)}"}
I never had an issue.
You also have to prompt the pickaxe to ask for the name and email address, then when you provide it, is stores it in the airtable.
Just saw this - thanks so much!