# Create template

Hoodle offers a flexible way to work with **data, automation, campaigns, and tracking**.

To avoid overly complex flows and to maximize reusability, we recommend creating **automations** that handle specific actions.\
\
If you are a developer, you can think of an automation as similar to a **function**: reusable, modular, and easy to update.

#### Example: Send a Discount

Instead of building a long campaign flow with conditions (e.g., validating the user’s language and branching into multiple channels like email, SMS, or push), you can create a dedicated automation called **SendDiscount**.

This automation could accept properties such as:

* `discount`
* `expiration`

From other automations or campaigns, you can simply **call the track** `SendDiscount` with values like:

* `discount = 20`
* `expiration = Dec 31, 2025`\
  \\

#### Why this is useful

* **Centralized logic** → If you ever need to change the flow (for example, update the message design or add a new channel), you only need to edit it once in the **SendDiscount automation**, rather than in every campaign.
* **Easier A/B testing** → You can test different versions of the discount flow in one place without editing multiple campaigns.
* **Consistency** → All campaigns calling `SendDiscount` will behave the same way, ensuring a uniform experience for your users.
