Do not sell my personal information
As described in our Privacy Policy, we collect personal information from your interactions with us and our website, including through cookies and similar technologies. We may also share this personal information with third parties, including advertising partners. We do this in order to show you ads on other websites that are more relevant to your interests and for other reasons outlined in our privacy policy.
Sharing of personal information for targeted advertising based on your interaction on different websites may be considered "sales", "sharing," or "targeted advertising" under certain U.S. state privacy laws. Depending on where you live, you may have the right to opt out of these activities. If you would like to exercise this opt-out right, please follow the instructions below.
If you visit our website with the Global Privacy Control opt-out preference signal enabled, depending on where you are, we will treat this as a request to opt-out of activity that may be considered a “sale” or “sharing” of personal information or other uses that may be considered targeted advertising for the device and browser you used to visit our website.
If you would like to opt out of activity that may be considered a "sale" or "share," or "targeted advertising", please submit your email.
Opted-out successfully
A problem occurred, try submitting your email again
To opt out of the “sale” or “sharing” of your personal information collected using cookies and other device-based identifiers as described above, you must be browsing from one of the applicable US states referred to above.
.pc--opt-out-initial { margin-bottom: 4rem; } .pc--opt-out-form { position: relative; display: flex; flex-direction: column; justify-content: center; align-items: center; width: 100%; } @media screen and (min-width: 750px) { .pc--opt-out-form { align-items: flex-start; max-width: 36rem; } } .pc--opt-out-form-field_wrapper { width: 100%; } .pc--opt-out-form-field_wrapper .field__input { padding-right: 5rem; } .pc--opt-out-form-field_wrapper .field { z-index: 0; } .pc--opt-out-form-message--success { margin-top: 2rem; } .pc--opt-out-form-message { position: relative; flex-direction: row; justify-content: center; align-items: center; width: 100%; margin-bottom: 0; } @media screen and (min-width: 750px) { .pc--opt-out-form-message { justify-content: flex-start; } } .pc--opt-out-form-button { z-index: 2; top: 0; right: var(--inputs-border-width); width: 4.4rem; height: 100%; margin: 0; } .pc--opt-out-form-button:focus-visible { box-shadow: 0 0 0 0.3rem rgb(var(--color-background)), 0 0 0 0.4rem rgba(var(--color-foreground)); background-color: rgb(var(--color-background)); } .pc--opt-out-form-button:focus { box-shadow: 0 0 0 0.3rem rgb(var(--color-background)), 0 0 0 0.4rem rgba(var(--color-foreground)); background-color: rgb(var(--color-background)); } .pc--opt-out-form-button:not(:focus-visible):not(.focused) { box-shadow: inherit; background-color: inherit; } .pc--opt-out-form-button .icon { width: 1.5rem; } function getUrlParam(paramName) { var queryString = window.location.search.slice(1); var paramsArray = queryString.split('&'); var paramValue = null; for (var i = 0; i < paramsArray.length; i++) { var param = paramsArray[i]; var keyValuePair = param.split('='); var key = keyValuePair[0]; if (key === paramName) { paramValue = decodeURIComponent(keyValuePair[1]); break; } } return paramValue; } function submitOptOutForm() { document.getElementById('pc--opt-out-form').submit(); } function showSuccessMessage() { var successMessageh3 = document.getElementById('pc--opt-out-success'); var successMessageEle = successMessageh3.getElementsByTagName('span')[0]; var email_address = getUrlParam('email'); var successMessage = email_address ? '<span>Opted-out </span><strong>' + email_address + '</strong><span> successfully</span>' : 'Opted-out successfully'; successMessageEle.innerHTML = successMessage; successMessageh3.style.display = 'flex'; } function showErrorMessage() { document.getElementById('pc--opt-out-error').style.display = 'flex'; } function showNotApplicableMessage() { document.getElementById('pc--opt-out-not-applicable').style.display = 'block'; } function setupForm() { var formContainer = document.getElementById('pc--opt-out-form-container'); formContainer.style.display = 'block'; var pcReturnTo = document.getElementById("pc_return_to"); pcReturnTo.setAttribute("value", window.location.pathname); } function loadFeatureCallback(error) { if (error) { throw error; } canOptOut().then((showForm) => { if (showForm) { setupForm(); if (getUrlParam('success') === 'true') { showSuccessMessage(); } else if (getUrlParam('success') === 'false') { showErrorMessage(); } } else { showNotApplicableMessage(); } }) } function canOptOut() { // First, check if the user is in the admin preview mode if (isAdminPreviewMode()) { return getSaleofDataRegions().then((regions) => { return regions.includes(window.Shopify.country); }); } // No admin preview mode var customerPrivacyApi = window.Shopify.customerPrivacy; if (customerPrivacyApi.unstable) { return Promise.resolve(customerPrivacyApi.unstable.saleOfDataRegion()); } return Promise.resolve(customerPrivacyApi.getRegulation() === 'CCPA'); } function ccpaOptOutLoader() { window.Shopify.loadFeatures( [ { name: 'consent-tracking-api', version: '0.1', }, ], loadFeatureCallback, ); } ccpaOptOutLoader(); function optOutOnLoad() { var optOutSubmitButton = document.getElementById('pc--opt-out-button'); var optOutForm = document.getElementById('pc--opt-out-form'); optOutSubmitButton.addEventListener('click', function (e) { e.preventDefault(); if (!optOutForm.reportValidity()) { return; } if (document.getElementById('hcaptcha')) { hcaptcha.execute(); } else { submitOptOutForm(); } }); } var liquidAccessToken = () => { var shopifyFeatures = document.documentElement.querySelector('#shopify-features'); if (!shopifyFeatures) { // eslint-disable-next-line no-console console.warn('Could not find liquid access token'); return undefined; }; var featuresAccessToken = JSON.parse(shopifyFeatures.textContent || '').accessToken; if (!featuresAccessToken) { // eslint-disable-next-line no-console console.warn('Could not find liquid access token'); return undefined; }; return featuresAccessToken; } async function getSaleofDataRegions() { var fetchParams = { headers: { // eslint-disable-next-line @typescript-eslint/naming-convention 'content-type': 'application/json', // eslint-disable-next-line @typescript-eslint/naming-convention 'x-shopify-storefront-access-token': liquidAccessToken(), }, body: JSON.stringify({ query: ` query bannerQuery { consentManagement { saleOfDataRegions } }`, }), method: 'POST', }; return fetch('/api/unstable/graphql.json?fast_storefront_renderer=1', fetchParams) .then((response) => { if (!response.ok) { return response.text().then(text => { throw new Error(text) }) } else { return response.json(); } }) .then((respJson) => { if (respJson.errors) { throw new Error(respJson.errors.map(e => e.message).join(', ')); } else if (!respJson || !respJson.data || !respJson.data.consentManagement || !respJson.data.consentManagement.saleOfDataRegions) { throw new Error('Invalid or empty response from the server'); } else { return respJson.data.consentManagement.saleOfDataRegions } }) .catch((error) => { // eslint-disable-next-line no-console console.error('Error fetching sale of data regions: ', error); return []; }); } function isAdminPreviewMode() { // Check if the user is in the admin preview, if so, the admin // preview bar will be present and cookie _ab=1 will be set var abCookie = document.cookie.split(';').filter((cookie) => cookie.trim().startsWith('_ab='))[0]; return abCookie ? abCookie.split('=')[1] === '1' : false; }
Let customers speak for us
from 39 reviewsBeautiful cushion. Amazing quality. Arrived really quickly.
I was in touch with Emma via email before ordering my items - her communication was very quick and helpful.
I then ordered a linen heart and Christmas cushion and these were received very quickly, the items solidly boxed with excellent packaging.
Once opened, the quality was evident and I`m extremely pleased with the orders.
Great service all round, many thanks,
Mike
Thanks, my wife loved it and great service and delivery.
Lovely heart, sewed skillfully and packaged and delivered well very happy
The package looked so good I didn’t open it as it is a gift. Any company that makes the effort to make their items look so lovely must make a beautiful gift, too!
Lovely Item. Very Pretty and Quick Delivery.
Personalised 12th Silk Wedding Anniversary Gift Heart
I made my order and I need it super speedy, you were so helpful and got this to me within days . It’s exactly as I asked and my husband loves it
Thank you so Much - quality product and customer service - I would highly recommend xx
Great product ,, great service
I'm delighted with my purchase, beautifully crafted and packed. Thank you.
I ordered the linen hearts for my wife for our 12th wedding anniversary.
The order and personalisation process was easy to do and they arrived in quick time, extremely well packaged and gift wrapped. Both myself and my wife like them and I'd order from here again. :-D
Thank you Emma for being absolutely brilliant and helping to turn around a personalised gift heart in a matter of days for a wedding anniversary gift. It's beautiful and exactly what I was hoping for.
Wife loved the items. Emma was very helpful in the design, dispatch and delivery of the items. Top notch customer service. Highly recommend.