Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the acf domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/u3ijtaqhsq6tecd/public_html/wp-includes/functions.php on line 6121

Notice: Function wp_enqueue_style was called incorrectly. Scripts and styles should not be registered or enqueued until the wp_enqueue_scripts, admin_enqueue_scripts, or login_enqueue_scripts hooks. This notice was triggered by the milad-css handle. Please see Debugging in WordPress for more information. (This message was added in version 3.3.0.) in /home/u3ijtaqhsq6tecd/public_html/wp-includes/functions.php on line 6121

Notice: Function is_feed was called incorrectly. Conditional query tags do not work before the query is run. Before then, they always return false. Please see Debugging in WordPress for more information. (This message was added in version 3.1.0.) in /home/u3ijtaqhsq6tecd/public_html/wp-includes/functions.php on line 6121

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wp-asset-clean-up domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/u3ijtaqhsq6tecd/public_html/wp-includes/functions.php on line 6121

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the wp-security-audit-log domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/u3ijtaqhsq6tecd/public_html/wp-includes/functions.php on line 6121

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the viwec-email-template-customizer domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/u3ijtaqhsq6tecd/public_html/wp-includes/functions.php on line 6121

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the yith-woocommerce-request-a-quote domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/u3ijtaqhsq6tecd/public_html/wp-includes/functions.php on line 6121

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the yith-multi-currency-switcher-for-woocommerce domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/u3ijtaqhsq6tecd/public_html/wp-includes/functions.php on line 6121

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the woo-cart-abandonment-recovery domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/u3ijtaqhsq6tecd/public_html/wp-includes/functions.php on line 6121
Calligraphy Key Holders - Persis Collection
Shopping Cart

No products in the cart.

Sign in
Register

Enjoy the added benefits of creating a personal account.

Create an Account

Notice: Function backorders was called incorrectly. Product properties should not be accessed directly. Backtrace: require('wp-blog-header.php'), require_once('wp-includes/template-loader.php'), include('/themes/persis/woocommerce/single-product.php'), wc_get_template_part, load_template, require('/themes/persis/woocommerce/content-single-product.php'), do_action('woocommerce_before_single_product_summary'), WP_Hook->do_action, WP_Hook->apply_filters, add_custom_content_for_specific_product, WC_Abstract_Legacy_Product->__get, wc_doing_it_wrong Please see Debugging in WordPress for more information. (This message was added in version 3.0.) in /home/u3ijtaqhsq6tecd/public_html/wp-includes/functions.php on line 6121

Calligraphy Key Holders

$14.08

Persian calligraphy wooden key holder

Out of stock

SKU: 22495

Calligraphy Key Holders

Persian calligraphy wooden key holder.handmade tiles

We Value Your Feedback!

Your opinion matters to us and helps others make informed decisions. If you enjoyed your experience, we’d love for you to share your thoughts on the following platforms:

Soheila Maynard


I've been ordering with Persis…

I've been ordering with Persis Collection for the past 3 years and loved all my items , so beautifully made and carefully packaged. My itmes are so unique and I can't find them here in US. Thank you so much and merci

Date of experience: January 11, 2024

shayanjavadzadeh


Reliable, professional and quality

Great communication and lovely secure packaging. I ordered haft seen set for my wife and was very impressed with the packaging as well as the art work. I definitely recommend to friends and family. I also received a free gift. Thank you so much.

Date of experience: March 04, 2024

Nooshin Emadi


Great customer service

Great customer service, quick delivery and the products were exactly what I saw and wanted as in the pictures.

Date of experience: August 04, 2024

Rayyan ESHAGHPOOR


Amazing quality

Amazing quality amazing service amazing packaging amazing communication

Date of experience: April 19, 2024

Ahmad Kamran


Excellent shopping experience every…

Excellent shopping experience every time!

Date of experience: February 17, 2024

Thank you for your time and support! Your feedback helps us grow and continue delivering excellent service.

CountryShipping OptionEstimated Delivery Time
UK Standard Delivery
Express Delivery
2 to 5 working days
1 to 2 working days
USAStandard Delivery
Express Delivery
4 to 10 working days
2 to 4 working days
EU1Standard Delivery (Austria, Belgium, France,
Germany, Ireland, Italy, Denmark, Netherlands,)
4 to 6 working days (varies by country)
EU2Standard Delivery (Spain, Bulgaria, Luxembourg, Croatia, Czech Republic,
Estonia, Finland, Greece, Hungary, Latvia, Lithuania, Monaco,
Norway, Poland, Portugal, Romania, Slovakia, Slovenia, Sweden,
Switzerland, Liechtenstein, Iceland, Andorra, San Marino, Malta, Cyprus)
4 to 8 working days (varies by country)
CanadaStandard Delivery4 to 6 working days
Rest of the WorldStandard Delivery (e.g., Australia, New Zealand, UAE,
Qatar, Jordan, Japan, Singapore, South Korea, India, China,
Hong Kong, Taiwan, Malaysia, South Africa, Brazil …)
4 to 10 working days (varies by country)
IranFree Standard Delivery2 to 4 working days
*For items made to order, an additional 2 to 4 weeks will be added to the delivery time.