475 releases and counting

What shipped

Release by release, with docs to match on docs.ecomyard.com. Built in the open, tested on our own brand first.

One alert per delivery, and it reaches someone

0.180.0 · Sep 15, 2026

  • FixedEvery creator delivery announced itself twice: two notifications, two Slack messages and two emails, one of them missing the creator, tier, platform and brief. Two places were writing the same alert without knowing about each other. One is left, the one that carries the detail.
  • FixedA workspace that connected Slack without choosing an alerts channel got no team alerts at all. Slack had nowhere to post them and the email was skipped because Slack was supposedly covering it. Without a channel the email goes out again.

Three ways to lose something, closed

0.179.1 · Sep 15, 2026

  • FixedSaving the same payout address twice in a creator portal erased the record of the address before it. That record is what makes a hijacked portal link recoverable rather than only noticeable, so it now only moves on when the address really changes.
  • FixedWhen an application came back refused, the I am not a robot box stayed ticked while the form asked for a fresh tick, which a solved box cannot give. The box is now reset, so the next attempt can actually be sent.
  • FixedUploading a file into a hub folder that someone else deleted mid-upload lost its place in the hub while the file itself sat in your Drive. It now lands at the top level instead of nowhere, and anything else that goes wrong is written to the error log rather than reported as success.

A retired form and a button that did nothing

0.179.0 · Sep 15, 2026

  • FixedThe application form Ecomyard used before signup pages existed was still reachable on the public API, and it skipped everything the current one checks: the spam traps, the country rules, the required questions and the terms tick. It would have filled a brand's inbox with applications claiming terms nobody ever showed them. It is closed.
  • FixedDisconnect on the Google Drive chip in the content hub only removed an old sandbox record. A real Drive connection stayed connected, kept taking uploads and kept its refresh token, while the button reported no trouble. It now disconnects for real, and says so when it cannot.

Refunding the postage no longer voids the commission

0.178.1 · Sep 15, 2026

  • FixedA refund that sent no product back, refunded shipping or a goodwill amount, took back the creator's whole commission on that order and dropped the order out of your revenue. Shopify reports those with an empty list of returned lines, and an empty list was read as no information at all. A refund now only reduces a commission by the product that actually came back.

Approving an applicant works

0.178.0 · Sep 15, 2026

  • FixedApproving an applicant who had not given a PayPal address failed outright: no affiliate, no code, no welcome email, and only "Could not approve this application" to go on. Since the standard signup page does not ask for PayPal, that was every approval on a new workspace. On a page that approves automatically it failed silently and the application simply never became an affiliate.
  • FixedA PayPal address given at signup by someone who is already on your roster now reaches their payout details. It used to mark them payable by PayPal while leaving the address blank, so the payout button refused them.
  • FixedTwo applications from the same creator approved at the same moment made two affiliates with two codes, splitting their revenue in half. Approvals for one person now wait for each other.

The Slack queue only counts what can still be sent

0.177.1 · Sep 14, 2026

  • FixedEvery team alert is queued for Slack whether or not a workspace has Slack connected, and the ones that could never be posted stayed queued for good. The queue now retires an alert once it is past the seven-day window the sender uses, so the number of waiting alerts means alerts that are actually still waiting. Nothing that can still go out is touched.

The site says what the product does

0.177.0 · Sep 14, 2026

  • FixedThirty claims on the public pages were checked against the code and corrected. The site no longer says it syncs with Figma, that Klaviyo and Meta are still coming, that approving a creative starts the ad, that an automation can fire on a sale, or that a creator sees a streak and the next tier. Google Drive left the list of tools Ecomyard replaces, because the content hub writes into your own Drive rather than replacing it.
  • FixedThe mocked screenshots stopped claiming things the product cannot do: no ROAS on the board, no Slack or Drive as sources the assistant reads, and safe links shown on the address they really use.

The Monday recap counts affiliates, not everyone

0.176.1 · Sep 14, 2026

  • FixedNew affiliates in the weekly Slack recap counted every person added to your roster, team members included, so adding a videographer would have read as a new affiliate. It counts affiliates now, the same way the Affiliates meter in Settings always did.

Removing a picture removes the file

0.176.0 · Sep 14, 2026

  • FixedTaking a logo, a background or a photo off a signup page only stopped the page from showing it. The file stayed in storage on a public address that kept working, and replacing an image left the old one there the same way. Now the file goes with it, on signup pages, persona photos, the workspace logo and your profile picture.

The session stays on its own host until the hosts are split

0.175.2 · Sep 13, 2026

  • FixedThe sign-in cookie was already shared across every ecomyard.com subdomain, which bought nothing while the product still lives on ecomyard.com and sent it along to hosts that are not this app. It is host-only again, and becomes domain-wide only once app.ecomyard.com is switched on. Either switch costs one sign-in.

Sign-in closes two small doors

0.175.1 · Sep 13, 2026

  • FixedA sign-in link whose destination began with a backslash could send you off-site after signing in. Destinations are now checked the same way everywhere: internal paths only.
  • FixedOpening a sign-in link with a destination while already signed in (an invite, say) now goes to that destination instead of the dashboard.
  • ImprovedOn the public site a mistyped address gets the site's own 404 rather than a sign-in screen, and a save started in a tab opened before the move finishes where it began.

The product has its own address

0.175.0 · Sep 13, 2026

  • NewThe signed-in product now lives on app.ecomyard.com. The site, the blog, pricing, brand application pages, the creator marketplace and creator portals stay on ecomyard.com; the ops dashboard stays on admin.ecomyard.com. A product link opened on the wrong host is sent to the right one, with its path and query intact.
  • ImprovedOne sign-in for the whole domain. Signing in on a brand's application page or applying to a briefing on the site carries straight into the product, and the session cookie has a new name so a stale copy from before the move is never read again.
  • ImprovedMail and Slack links point where they lead: team notifications into the product, creator mails to the portal. Webhook addresses, cron pings, MCP connections and every OAuth redirect stay on ecomyard.com, so nothing registered with Shopify, Klaviyo, Meta, Google or Slack has to change.

The AI allowance follows the plan

0.174.0 · Sep 12, 2026

  • FixedGrowth and Scale have said 300 and 1000 AI questions a month since the plan list was written, and every workspace was measured against a flat 100 regardless. The ceiling now comes from the plan on the workspace: 100 on the trial and Starter, 300 on Growth, 1000 on Scale. The meter on the AI page and the message when it runs out say the same number.

The docs stop contradicting the product

0.173.0 · Sep 12, 2026

  • FixedThe Meta article said the connection could not be made and, in the same breath, that it would create ads. Neither was true. It now says what connecting does today, which is store the account and the ad account you picked, and lists the three things it does not do yet: upload, create ads, read spend. The connections page and the ad account picker stop saying creatives go into the media library, because nothing sends them there yet.
  • FixedThree help articles, team invites, ICP research and the marketplace, landed on the docs home page from every link to them. They land on their own section now.
  • FixedThe AI article promised 100 questions a month. The allowance is 100 units, and a pro question takes three of them, so it now says so: 100 everyday questions, 33 pro ones, or a mix.
  • FixedThe Shopify article named three permissions out of the eleven the app asks for, and the connections page advertised one, write_orders, that it never asks for at all. Both lists now match what Shopify actually shows you at connect.
  • FixedThe quickstart sent you to upload brand guidelines on a screen that does not exist, and the Overview article described a home page from several versions ago, with a checklist you ticked by hand and two numbers that are no longer on it. Both describe what is there now.

No more choosing a way of being paid that cannot pay you

0.172.0 · Sep 12, 2026

  • FixedThe creator portal went on offering store credit for nine days after it was switched off. A creator could pick it, be shown Ready for payouts in green, and then have the brand’s Pay out button refuse them with a message telling them to pick store credit. The portal now reads the one list the rest of the product reads, so the next time a method is switched off it follows by itself.
  • FixedA creator already on a retired method no longer sees a green light. Their page says the method is no longer available and asks them to pick another, and the brand’s list stops counting them as ready to be paid.
  • FixedThe database refuses a retired method too, so nothing can save one whatever it comes from.

Everything people send now reaches somebody

0.171.0 · Sep 12, 2026

  • FixedShopify’s three compliance webhooks were answered yes and thrown away. The function that records them was never granted to the role a webhook arrives as, and nothing looked at the failure, so every data request, customer redact and shop redact since the integration shipped left no trace at all. They are recorded now, and a write that fails returns an error so Shopify sends it again instead of us pretending.
  • ImprovedA compliance record keeps the shape of the request and nothing else: which shop, which customer id, which orders. The email and the phone number in the payload are dropped on the way in, so the webhook that exists to erase somebody cannot become the one place their details are kept.
  • FixedA shop running its own Shopify app had every webhook refused. The lookup that resolves a shop to its app was denied to the same role, so the check always fell back to our own credentials and the signature never matched.
  • NewOps has an Inbox: everything people sent that used to land in a table nobody could read. Messages from the contact form, support requests with their workspace and status, and anyone who asked to be deleted, with the ones past their date marked.
  • FixedThe support form told you it was sent even when it was not. It has always redirected back with the reason on failure and the page only ever read the good half.
  • FixedAsking to delete your account now does what the screen promises. Typing DELETE is checked on the server and not only by a disabled button, a workspace you are the only owner of stops the request and says which one, and the login page finally confirms that the request landed instead of looking as if nothing happened.

An offer opens as two things, not eleven fields

0.170.0 · Sep 11, 2026

  • ImprovedWriting an offer was one column of eleven identical boxes, which gave a bundle, a date and a status the same weight. It opens wide now and splits the way the work splits: the words an ad has to carry on the left, and the levers that decide how it behaves (kind, window, code, status) grouped on a band of their own on the right.
  • ImprovedA promotion that has already run opens with its result instead of its form. The numbers sit at the top with your own verdict beside them, because by then you are not there to write it, you are there to read it. The window and whether it is scheduled, running or over sit next to the name.

An offer that runs for a week, and says what it did

0.169.0 · Sep 11, 2026

  • NewAn offer’s dates finally mean something. Give it a start and an end and the card says Scheduled, Running or Ended with the window beside it, and once it has started it shows what those products sold against the same number of days before.
  • NewOpen a finished offer and it reports itself: units, revenue, orders and gross margin for the products it covers, each against the window before it. Straight from your Shopify orders, with the caveats printed rather than hidden: this is what was charged, including VAT, before returns.
  • NewGive the offer its discount code and the report separates the promotion from the products: how much of that week actually came in on the code, rather than from people who were going to buy anyway.
  • NewThe half no order line can answer, in your own words: what you made of it, and whether you would run it again.
  • ImprovedThe order sync now stores the discount codes on every order it reads, which is what makes the code half possible. It starts counting from today; orders synced before this cannot be matched, and the report says so instead of reporting a zero as if it meant nothing happened.

The plan screens tell the truth again

0.168.0 · Sep 11, 2026

  • FixedSwitching plan did nothing. The cards in Settings were an old list of their own, with names the server had never heard of and prices that were never ours, so every button answered “Unknown plan”. Both screens now read the one plan list the rest of the product uses, so the names, the prices and what each plan includes are the same everywhere.
  • FixedUsage and limits read your ceiling off a third list, which meant a workspace on a paid plan was measured against the trial. It follows your real plan now, and the affiliate meter finally shows the number your plan actually allows instead of no limit at all.
  • FixedThe job that pushes new discount codes to Shopify existed only on the live database, never in a migration. Rebuilt from these files, a fresh database would have stopped creating codes with nothing to say so: no code at checkout and no attribution. It is written down now.

The same box on every door that makes an account

0.167.0 · Sep 11, 2026

  • NewThe tickbox now sits on both account screens as well: the one on a brand’s own page and the Ecomyard one. On both or on neither, because a check on one of two ways to make an account keeps nobody out; whatever it stops simply walks through the other.
  • ImprovedThe privacy policy says that our public signup and account pages load Google reCAPTCHA, and what that sends to Google. It named only our hosting and database before.

The box that says you are not a robot

0.166.0 · Sep 11, 2026

  • NewGoogle's reCAPTCHA tickbox on the public application form, under the last question. It joins what was already there rather than replacing it: the field no person can see, the floor under how fast a form can be filled in, and the per-connection limit all still stand, because a captcha is one wall and not a building.
  • ImprovedA form sent without ticking it is refused the way every other field is refused, in red under the box itself, and the page travels to it.
  • NewNothing is loaded from Google until the keys are configured. Without them the page makes no third-party request at all and the form works exactly as it did.

Four ways a signup page could lose your work

0.165.0 · Sep 11, 2026

  • FixedDeleting a persona deleted its signup page, with the questions, the pictures and the perks on it. The page kept a leftover wire to the persona from back when it could only belong to one; a page aimed at several only lost itself when you deleted the first of them, which made it look random. A page is now a record of its own, like an application or a brief: it stays, and if it was aimed at more personas it simply follows to the next one.
  • FixedA signup page could be saved with a link too long for the public page to read: the builder said Live and the address answered 404. New pages can no longer mint one, and the database now refuses any link the page cannot look up, on both halves of the address.
  • FixedA long headline or intro was cut short on saving without a word about it, so the bar said Saved and the missing sentence was only discovered by opening the live page. The field now stops where the limit is, and anything longer arriving another way is refused with the number rather than trimmed. Same for the link to your terms.
  • FixedAn SVG logo is accepted. It was refused with a message about file size, whatever the real reason, because the bucket it went to has never taken drawings. Logos now go to the one that does. Every picture refused anywhere on the page, and on a persona, now says what is actually wrong with it.
  • FixedYour name survives a refused signup on the Ecomyard register too, the same as on a brand's own page.

Signing in without leaving the brand

0.164.0 · Sep 10, 2026

  • NewSign in here on a signup page now leads to that brand's own sign-in screen, at /apply/<brand>/login: the same photograph, the same mark and the same glass as the page they applied on. A persona page brings its own picture and its own logo, so the screen is the persona's, not the workspace's.
  • NewMaking an account after applying happens on the brand's page too, at /apply/<brand>/create. It always makes a creator account, without the brand-or-creator choice the public signup shows, because the door somebody came through already answered that.
  • ImprovedA wrong password, a refused address or a password that is too short now comes back to the page it was typed on, with what you had already filled in still there. Before, anything typed on a brand's page returned you to the Ecomyard login, mid-flow, with the brand nowhere in sight.
  • ImprovedThe confirm-your-email screen belongs to the brand's page as well, so the last thing an applicant sees before opening their mail still says who they applied to.
  • FixedYour name survives a refused signup. It was the one field the form threw away when it came back with an error.

Every field says its own piece

0.163.0 · Sep 10, 2026

  • ImprovedA refused field now says what is wrong under itself, in red, and every refused field says it at once instead of one line at the bottom of the page about a question seventeen rows up. The page still travels to the first of them.
  • NewThe platform's own mark sits in front of the field that belongs to it: Instagram, TikTok, YouTube, Facebook, Pinterest, X and PayPal, next to the @ that says a username is wanted rather than a link. The email field carries an @ of its own.
  • NewThe phone field shows the dial code of the country picked further up, and puts it in front of the number on the way out, so a number typed as 06 12345678 in the Netherlands is stored as +31 6 12345678.
  • NewSpam protection on every signup page: a field no person can see, a floor under how fast a form can be filled in, and a name with a link in it is refused. A form filler that walks into the first of these is answered with nothing at all.
  • ImprovedBoth handles are asked for when a page asks for both. A brand that only wants one switches the other off; leaving it at one of the two meant half the applications arrived with a single channel and no way to check the other.
  • ImprovedThe top of a signup page is the photograph again. The strip of light across the first rows and the halo around the logo are gone; the mark carries the same soft shadow the headline under it does.
  • FixedThe PayPal address and the phone number sat under headings about reach and about where you live. They are their own subjects now, so no heading says something the questions under it do not answer.
  • ImprovedA run of questions only gets a heading when it actually groups more than one. A single question already carries its own name and its own line of why, and a heading over it was the same sentence twice in a bigger typeface.
  • ImprovedThe pane the questions sit on is glass now rather than a tinted box: it blurs and lifts the colour of whatever is behind it, catches a line of light along its top edge, and floats on a wide soft shadow. On a dark photograph it turns to smoked glass with light type.
  • ImprovedNothing is painted over the photograph any more. The two black scrims that sat on top of it are gone, so a brand’s picture arrives at full strength, and the headline over it carries its own shadow instead.

A backdrop made for the screen it is on

0.162.0 · Sep 10, 2026

  • ImprovedA signup page without a banner of its own now has two backdrops instead of one: a wide infrared landscape on a desktop and a deep green one built for a tall screen on a phone. One picture could not serve both, because a landscape cropped to a phone is a detail of a field and a tall frame stretched across a desktop is a blur. The browser fetches exactly one of the two.
  • FixedA brand logo drawn in dark ink reads again. Both backdrops are darkest at the top, which is where the logo sits, so the first strip of the page is lifted just enough to give the mark a ground without touching the white headline under it.

Pictures over a megabyte upload again

0.161.0 · Sep 10, 2026

  • FixedA banner, a persona picture or a brief cover over one megabyte failed to upload, which is most pictures taken on a phone. The buckets have always allowed five; the limit was the one Next puts on a file travelling through a server action, and it defaults to one. It is four now.
  • ImprovedA picture that is still too big says so before it is sent, with its own size and the limit in the sentence, instead of failing somewhere in the middle with a message about the server.

The signup page is one page again

0.160.0 · Sep 10, 2026

  • ImprovedEverything a signup page asks is on one scrollable page instead of a screen at a time. The pages brands actually build ask about eight things, and five screens with a progress bar to type eight answers is four taps and a wait in the way. The questions keep their headings, so a page that asks everything still reads as sections rather than a wall.
  • ImprovedWhere are you based is a picker instead of a list. Forty-two rows sitting open in the middle of a form is most of a phone screen of countries nobody is from; now it is one line saying what is picked, and the list with its search only while somebody is picking.
  • NewSend application follows you down a long page. The button at the end of the form is the real one, and a copy of it sits over the page only while that one is off screen, so a short form has no bar floating over its own footer.
  • ImprovedPress Send with something missing and the page says which answer and takes you to it, instead of leaving you to find it. Autofill can now fill the whole form at once, which it could never do across separate screens.

Terms your creators can actually agree to

0.159.0 · Sep 10, 2026

  • NewEcomyard now has a standard set of affiliate terms, and a signup page uses them unless you put your own link there. Plain language, between you and the creator: the link and the code, what a commission is and when it is paid, what happens to a refunded order, what you may do with their posts, and how either side ends it. Read them at ecomyard.com/affiliate-terms.
  • FixedThe terms tick no longer waits for you to write and host your own terms. It used to be switched off until a link was typed, which meant the one screen where a creator agrees to anything was off on nearly every page. What somebody agreed to is still stamped onto their application, so replacing the link later does not rewrite what they saw.

Usernames, not follower counts

0.158.0 · Sep 10, 2026

  • ImprovedA signup page asks for the account instead of the number. Facebook, Pinterest and X join YouTube in the catalogue, and the two follower questions are gone: a number somebody types from memory is neither checkable nor much use, while a username is the profile you open before deciding. A pasted profile link is stored as the name behind it, whichever site it came from.
  • NewYou can ask for a PayPal address on the page. Approving puts it straight into that affiliate's payout details, so the first payout run finds it without anybody typing it again. It stays off their profile: that screen answers whether somebody can be paid and never on which address.
  • NewInstagram, TikTok and the country are yours to switch off. They start on, because a handle is how you check somebody and a country is how you know whether you can ship to them, and turning one off says so in the row rather than after the fact. A page that only takes applicants from the countries you picked cannot switch the country off at all.
  • ImprovedThose three are listed in the What it asks card rather than only mentioned in the line above it. A list that showed YouTube and Facebook but not Instagram read as a list with Instagram missing.
  • FixedThe follower answers already given are kept. Nothing asks for them any more, but the columns stay, because they are somebody's words.

A signup page is saved when you say so

0.157.0 · Sep 10, 2026

  • ImprovedBuilding a signup page no longer writes to the server on every keystroke and every tick. A bar comes up at the bottom of the screen the moment something changes, names the cards you touched, and waits: Save changes, or Discard. It follows you down the page, so you never scroll to reach it, and cmd S presses it.
  • NewLeaving with changes still on the screen asks first. A link in the sidebar, the back button, a reload or closing the tab all stop and offer to save, to leave anyway, or to stay. Before this, clicking away from a headline you had typed but not clicked out of simply lost it.
  • NewThe buttons that navigate without being links ask too: log out, the workspace switcher, the account menu, the search palette and the keyboard shortcuts. Nothing in the browser can see a button calling the router, so those check with the screen themselves. Nothing armed means they behave exactly as they did.
  • ImprovedYour pictures and the on switch still save the moment you press them. A picture is already uploaded by the time you see the thumbnail, and switching a link off is a door you are closing rather than an edit you are drafting.
  • FixedClearing your terms link and switching the terms tick off is one press now. It used to be refused, because the check read the tick that was still in the database instead of the one you were setting.