Changelog

Follow up on the latest improvements and updates.

RSS

Mechanic now supports a run-time form pathway. Use it when you to run a task with fresh values—without touching its saved configuration. Or when you want to present a subset of configurable task options to a less technical user.
User forms on demand
Add the
__userform
flag to any option key. Those fields show up in a sleek ad-hoc form whenever you hit Run Task when a task subscribes to the
mechanic/user/form
topic.
Mix-and-match inputs
Keep your core settings fixed in the task editor, but let teammates override just what matters—think a one-off launch date or promo code—right from the form.
image
--
Add new enriched type flags to your option key and watch plain text boxes turn into polished controls.
Pair each snippet below with a screenshot of the control in action.
New options Types
📅 Date picker
launch_date__date
🕑 Datetime picker
send_at__datetime
⏰ Time picker
quiet_time__time
🎨 Colour picker
theme_color__color
🎚 Range slider
qty__range_min0_max100_step5
🔽 Dropdown
plan__select_o1_basic_o2_pro
🔘 Radio choice
tier__choice_o1_gold_o2_silver
✅ Multi-select list
channels__multiselect_o1_email_o2_sms_o3_push
🛍 Shopify resource picker
product__picker_product
(single)
products__picker_product_array
(multiple)
---
Copy-paste demo
{% assign launch_date = options.launch_date__date %}
{% assign send_at = options.send_at__datetime_futureonly %}
{% assign theme_color = options.theme_color__color %}
{% assign qty = options.qty__range_min0_max100_step5 %}
{% assign plan = options.plan__select_o1_basic_o2_pro_required %}
{% assign channels = options.channels__multiselect_o1_email_o2_sms_o3_push %}
{% assign product = options.product__picker_product %}
{% assign products = options.products__picker_product_array %}
When preparing event webhooks to send to apps like Mechanic, Shopify uses payloads as defined by a specific version of their Webhook API.
Effective immediately, Shopify events in Mechanic now use webhook payloads from version 2025-04 of the Shopify Webhook API.
Breaking changes
Shopify has not noted any breaking webhook changes for this version.
Read more
Starting Feb 1, 2025, Shopify admin action links for products and variants will no longer load the entire resource from Shopify’s REST API. Instead, only the resource ID and its GraphQL API ID will be returned due to the Shopify REST deprecation.
Example of the New Payload
{
"id": 123456,
"admin_graphql_api_id": "gid://shopify/Product/123456"
}
What does this mean?
  • If you rely on additional fields (like title, vendor, etc.), you must fetch those via the Shopify GraphQL API.
  • If you only need the ID then no change is required.
When preparing event webhooks to send to apps like Mechanic, Shopify uses payloads as defined by a specific version of their Admin API.
Effective immediately, Shopify events in Mechanic now use webhook payloads from version 2025-01 of the Shopify Admin API.
⚠️ Historically, Shopify has based these payloads on REST Admin API resource representations. Per Shopify: The REST Admin API is a legacy API as of October 1, 2024. Moving forward, webhooks have their own definition and documentation, located at https://shopify.dev/docs/api/webhooks.
Breaking changes
Where Customer data appears in webhook payloads, Shopify has removed the following customer attributes in 2025-01 webhooks:
  • tags
  • email_marketing_consent
  • sms_marketing_consent
  • last_order_id
    ,
    last_order_name
    ,
    total_spent
    , and
    orders_count
‡ To ease the transition with
customer.tags
, we're partially patching for this: Mechanic Liquid provides background support for direct reference to
tags
on Customer objects, even when responding to Shopify events that omit this customer attribute. (If you've got questions about this, head to slack.mechanic.dev!)
Read more
We're excited to announce two new actions that bring Google Workspace integration to Mechanic: the
Google Drive action
and the
Google Sheets action
!
Google Drive Action
Upload files in Google Drive directly from your Mechanic tasks. The Google Drive action supports:
Example usage:
{% action "google_drive" %}
{
"account": "user@example.com",
"uploads": {
"overwrite": true,
"simple.txt": "This is a simple text file",
"report.pdf": {
"pdf": {
"html": "<h1>Monthly Report</h1><p>This is a PDF generated from HTML</p>"
}
}
}
}
{% endaction %}
Google Sheets Action
Interact with the Google Sheets API!
1. Append Rows
Add new rows to existing spreadsheets:
{% action "google_sheets" %}
{
"account": "user@example.com",
"operation": "append_rows",
"spreadsheet_id": "your-spreadsheet-id",
"sheet_name": "Sheet1",
"rows": [
["Column1", "Column2", "Column3"],
["Value1", "Value2", "Value3"]
]
}
{% endaction %}
2. Create Spreadsheet
Create new spreadsheets with initial data:
{% action "google_sheets" %}
{
"account": "user@example.com",
"operation": "create_spreadsheet",
"title": "New Spreadsheet",
"rows": [
["Column1", "Column2", "Column3"]
]
}
{% endaction %}
3. Export Spreadsheet
Export spreadsheets in multiple formats:
{% action "google_sheets" %}
{
"account": "user@example.com",
"operation": "export_spreadsheet",
"spreadsheet_id": "your-spreadsheet-id",
"file_type": "xlsx" # Supports xlsx, csv, pdf, html, ods, tsv
}
{% endaction %}
Getting Started
To use these actions:
  1. Navigate to your Mechanic account settings
  2. Click on Authentication
  3. Connect your Google account
These actions follow Google's rate limits and best practices, ensuring reliable performance for your automation tasks.
For detailed documentation and more examples, visit our docs.
Check out the demonstration tasks in the task library: Google Drive and Google Sheets.
When preparing event webhooks to send to apps like Mechanic, Shopify uses payloads as defined by a specific version of their Admin API.
Effective immediately, Shopify events in Mechanic now use webhook payloads from version 2024-10 of the Shopify Admin API.
⚠️ Historically, Shopify has based these payloads on REST Admin API resource representations. Per Shopify: The REST Admin API is a legacy API as of October 1, 2024. Moving forward, webhooks have their own definition and documentation, located at https://shopify.dev/docs/api/webhooks.
Breaking changes
Shopify has not noted any breaking changes to event webhook payloads in this version.
Read more
Hey everyone! Shopify is
deprecating parts of the Admin REST API
, starting with product and variant endpoints. These endpoints will stop working on
February 1, 2025
.
🔄
What’s changing?
  • Shopify is moving away from REST and focusing on
    GraphQL
    . By Feb 1, 2025, task code using product and variant REST liquid objects
    must switch to GraphQL
    .
  • GraphQL brings
    better performance and scalability
    —it’s great for large product catalogs and allows for
    more efficient data retrieval
    . Most complex tasks are already using GraphQL, so this change aligns with where Shopify is headed.
🎉
Library tasks—easy upgrade:
🛠
Custom tasks—here’s what you need to do:
🗓
You’ve got plenty of time to update before February 1, 2025
, and the community is here for you if you have questions! You can join our Slack community here: https://learn.mechanic.dev/resources/slack.
  • csv filter
    : Now accepts an optional
    delimiter
    argument, defaulting to a comma.
  • parse_csv filter
    : Now accepts a
    delimiter
    option, defaulting to a comma and a
    headers
    option to interpret the first line as headers.
Example Usage
csv filter
Default usage
(no arguments):
{% assign csv = rows | csv %}
With custom delimiter
:
{% assign csv = rows | csv: ";" %}
parse_csv filter
Default usage
(no arguments):
{% assign orders = csv_string | parse_csv %}
With headers only
:
{% assign orders = csv_string | parse_csv: headers: true %}
With custom delimiter only
:
{% assign orders = csv_string | parse_csv: delimiter: ";" %}
With headers and custom delimiter
:
{% assign orders = csv_string | parse_csv: headers: true, delimiter: ";" %}
[edit] It looks like this change has varying impact. For community discussion on this, join this Slack thread.
Read more
Load More